¿De qué hablamos cuando nos referimos a Docker? Imágenes – Contenedeores – Instancias.
En este post vamos descubrir cual es la diferencia.
¿Qué es una imagen?
Una imagen es una plantilla, de un contenedor que corre alguna aplicación. Las imágenes al ser plantillas van a ser usadas para crear nuevos contenedores. Las plantillas nunca cambian a menos que creemos una nueva a partir de un contenedor.
Hay muchas imágenes públicas con elementos básicos como Java, Ubuntu, Apache…etc, que se pueden descargar y utilizar.
Cuando lo que necesitamos es crear nuevas imágenes, partimos de una imagen padre básica, como por ejemplo una imagen de Debian a la que le vamos añadiendo programas.
¿Qué es una contenedor o instancia?
Consideramos instancia a la ejecución de una imagen. Las instancias son las encargadas de ejecutar las aplicaciones que necesitamos. A partir de una única imagen, podemos ejecutar varios contenedores a los que también llamaremos instancias.
Ahora que entendimos la diferencia podemos hacer una práctica.
¿Cómo descargamos una imagen?
Para ver la diferencia entre Docker, Imágenes, Contenedeores e Instancias, vamos a descargar desde los repositorios una imagen de Debian 10.
:~$ docker run debian:buster Unable to find image 'debian:buster' locally buster: Pulling from library/debian 376057ac6fa1: Already exists Digest: sha256:4ab3309ba955211d1db92f405be609942b595a720de789286376f030502ffd6f Status: Downloaded newer image for debian:buster
Como podemos observar se descargo desde el repo llamado debian la imagen llamada buster, que se guardó localmente.
El paso que sigue es ver cuales son las imágenes descargadas en nuestro repositorio local. El comando es el siguiente:
:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE debian buster 5971ee6076a0 3 weeks ago 114MB
Como podemos observar en nuestro repositorio local debian tenemos una imagen llamada buster. El siguiente paso es saber si tenemos alguna instancia corriendo, recordemos que instancia y contenedor son sinónimos. Para esto usaremos el siguiente comando:
:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a5e3742bcc9 debian:buster "bash" 8 minutes ago Exited (0) 8 minutes ago crazy_turing
Como vemos tenemos un contenedor cuyo ID es 1a5e3742bcc9 y está asociado al repositorio local debian y a la imagen llamada buster. El comando ejecutado fue bash, en este momento podemos ver que el contenedor está apagado (Exited) , y el nombre es crazy_turing.
Ahora vamos a correr un contenedor y vamos a ingresar a él para trabajar. Tengamos en cuenta que éste contenedor va a quedar stop porque su único trabajo era correr bash y teminar.
$ docker run -it debian:buster /bin/bash root@ec3d1110711a:/#
Como vemos, quedamos dentro del contenedo. Si salimos el mismo queda en estado exited.