Analogía:
- Clases = Imágenes
- Objetos = Contenedores
Conceptualmente, un container es una capa escribible sobre una imagen, que es solo la definición. Son varias capas, el kernel, el SO, las aplicaciones, etc. Y la una capa puede ser usada en varias imágenes.
La imagen
registry
(https://hub.docker.com/_/registry) es un equivalente de Artifactory.
FROM
: imagenRUN
: comandoADD
: copiar
docker version
: muestra versión de cliente y servidor (la docker machine)docker-machine ls
muestra lista de docker machinesdocker-machine env
: muestra variables de entorno de docker machine, por ejemplo la IPdocker-machine stop
: apaga el docker serverdocker-machine start
: enciende el docker server
docker ps
(docker container ls
): lista de containers-a
muestra incluso los inactivos
docker image ls
(docker images
): lista de imágenes-a
incluye ocultas
docker pull ubuntu:latest
: descarga la última versión de cierta imagen y lo guarda dentro del registro local de imágenesdocker create -t -i ubuntu /bin/bash
: crea un contenedor a partir de una imagen-t
que devuelva una terminal-i
interactivo/bin/bash
ejecutara (cuando sea levantado) el bash del ubuntu-d
modo detachado
docker start -a -i <ID>
: levanta el contenedor-a
stdout-i
interactivo
docker rm <ID>
: borra el contenedordocker rmi <ID>
: borra la imagendocker run -i -t ubuntu /bin/bash
: todo de una (baja la imagen, crea el contenedor y se loguea)docker run hello-world
: descarga y crea hola mundo de Docker
docker build -t dockertest .
: construye la imagen a partir delDockerfile
del directorio donde se está parado-t
nombre de la imagen
docker image inspect dockertest
ver detalles de la imagendocker run -p 4000:80 dockertest
-p
expone (mapea) los puertosexterno:interno
(de 4000 a 80)-d
modo detachado
Se podría bajar un container, hacerle modificaciones y luego crear una imagen; pero NO es apropiado. Lo correcto es hacer todos los ajustes en el
Dockerfile
, para mantener el concepto de infrastructure as code.
Los procesos se ejecutan realmente en el SO host; por eso se los puede ver desde el host.