Docker 101

¿Que es Docker?

Docker es una herramienta para package & ship apps. Basado en la idea de ship un contenedor. Provee una manera estandarizada para que desarroladores o administradores de sistemas creen imagenes o colecciones de imagnees para cada elemento de la aplicación y asi facilmente deploy la imagen.

Docker si es:

  • Una herramienta open source que pone una capa encima de containers Linux, para que sea fácil empaquetar y ship apps complejax.
  • Una herramienta para crear un filesystem en layers; cada capa esta versionada y puede ser compartida entre instancias que estan corriendo, haciendo asi deployments más ligeros.
  • Una compañia detras del proyecto y una página llamada "Docker Hub" donde se pueden compartir contenedores.

Docker no es:

  • Una maquina virtual (VM). A diferencia de un VM, los contenedores de docker no requieren un host OS, esto significa que son mucho más chicos que un VM.
  • Una herramienta de automatización de infrastructura, como Puppet o Chef.

Hay que entender:

  • image: Es un estado especifico del filesystem.
  • layers: Una imagen esta compuesta de layers que representan los cambios en el filesystem en diversos puntos en el tiempo; layers son similares al historial de commits en un repo de git.
  • contanier: Es un proceso en ejecución basado en una imagen.
  • Se puede cambiar el estado del filesystem en un contenedor hacerle un commit y crear una nueva imagen.
  • Cambios en memoria no se commit - solo cambios en el filesystem
$ docker [OPTIONS] COMMAND [arg...]

Los comandos de docker usan un formato estilo git

$ docker help
attach	Attach to a running container
build	Build an image from a Dockerfile
commit	Create a new image from a container's changes
cp	Copy files/folders from a container's filesystem to the host path
diff	Inspect changes on a container's filesystem
events	Get real time events from the server
export	Stream the contents of a container as a tar archive
history	Show the history of an image
images	List images
import	Create a new filesystem image from the contents of a tarball
info	Display system-wide information
inspect	Return low-level information on a container
kill	Kill a running container
load	Load an image from a tar archive
login	Register or log in to the Docker registry server
logs	Fetch the logs of a container
port	Lookup the public-facing port that is NAT-ed to PRIVATE_PORT
pause	Pause all processes within a container
ps	List containers
pull	Pull an image or a repository from a Docker registry server
push	Push an image or a repository to a Docker registry server
restart	Restart a running container
rm	Remove one or more containers
rmi	Remove one or more images
run	Run a command in a new container
save	Save an image to a tar archive
search	Search for an image on the Docker Hub
start	Start a stopped container
stop	Stop a running container
tag	Tag an image into a repository
top	Lookup the running processes of a container
unpause	Unpause a paused container
version	Show the Docker version information
wait	Block until a container stops, then print its exit code

Hay 3 grupos clave de commandos

  • Comandos relacionados con el manejo de images, como image, build, save, rmi, tag.
  • Comandos relacionados con containeres, como run, ps, kill, restart, top, pause.
  • Comandos relacionados con Docker hub, como login, search, pull, push.
Made with Slides.com