FreeBSD jails - 2000
Solaris Zones - 2004
LXC containers - 2008
Docker - 2013
built on LXC
moved to libcontainer (March 2014)
appC (CoreOS) announced (December 2014)
Open Containers standard for convergence with Docker Announced (June 2015)
moved to runC (OCF compliant) (July 2015)
Podman - 2019
pid: Process isolation
net: Managing network interfaces
ipc: Managing access to IPC resources
mnt: Managing filesystem mount points
uts: Isolating kernel and version identifiers. (UTS: Unix Timesharing System).
Memory
CPU
Devices
Freezer
Nota: Docker 1.10 introdujo el comando docker update para cambiar los límites de cgroup
Deprecated
Docker Toolbox has been deprecated and is no longer in active development. Please use Docker Desktop instead. See Docker Desktop for Mac and Docker Desktop for Windows.
docker run -it --isolation=process mcr.microsoft.com/windows/servercore:ltsc2019 cmd
docker run -it --isolation=hyperv mcr.microsoft.com/windows/servercore:ltsc2019 cmd
FROM ubuntu
RUN curl -sL https://deb.nodesource.com/setup_lts.x -o /usr/setup_lts.sh
RUN bash /usr/setup_lts.sh
RUN apt-get update
RUN apt-get install -y nodejs
COPY . /usr/app
RUN npm install
CMD [ "npm", "run", "start" ]
FROM node:14
WORKDIR /usr/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "node", "server.js" ]
Mal
No esta mal (podrías usarlo en dev)
# Build stage
FROM node:14.4.0 AS build
USER node
WORKDIR /home/node/app
COPY --chown=node:node package*.json ./
RUN npm install
COPY --chown=node:node src ./src
RUN npm run build
# Run-time stage
FROM node:14.4.0-alpine
USER node
EXPOSE 8080
WORKDIR /home/node/app
COPY --chown=node:node --from=build /home/node/app/ ./
CMD [ "node", "app.js" ]
PERFECTO (deberías usar esto en producción)
Recursos/Fuentes/Documentación