Creación de imágenes desde contenedores

El sistema de imágenes de Docker funciona como un control de versiones por capas, de forma similar a la herramienta “git” para control de versiones. Podemos entender que un contenedor es como una “capa temporal” de una imagen, por lo cual, podemos hacer un “commit” y convertir esa “capa temporal” en una imagen. La sintaxis más habitual es la siguiente:

docker commit -a "autor" -m "comentario" ID/NOMBRE-CONTENEDOR usuario/imagen:[version]

Por ejemplo, si tenemos un contenedor con nombre “mi_ubuntu” que simplemente es un contenedor basado en la imagen “ubuntu” en el que se ha instalado un programa y hacemos:

docker commit -a "paco" -m "Ubuntu modificado" IDCONTENEDOR paco/ubuntumod:22

y tras ello, comprobamos las imágenes con

docker images

observamos lo siguiente:

paco@paco-xubuntu:~$ sudo docker commit -a "paco" -m "Ubuntu modificado" mi_ubuntu paco/ubuntumod:22
sha256:cb4889c722bed0a38dcdf3c7a7272b0a26d4ef3e9a4d5c18752601c75204b2fa

paco@paco-xubuntu:~$ sudo docker images
REPOSITORY          TAG          IMAGE ID         CREATED             SIZE
paco/ubuntumod      22           cb4889c722be     25 seconds ago      123MB
ubuntu                 latest       a8780b506fa4     12 days ago         77.8MB

Ahora ya podríamos crear nuevos contenedores con esa imagen, usando por ejemplo:

docker run -it paco/ubuntumod:22

Si quisiéramos añadir una nueva etiqueta a la imagen, como “latest”, podemos usar el comando “docker tag”, teniendo en cuenta que una misma imagen puede tener varias etiquetas:

docker tag paco/ubuntumod:22 paco/ubuntumod:latest

Para eliminar una etiqueta, simplemente deberemos borrar la imagen con docker rmi. La imagen se mantendrá mientras al menos tenga una etiqueta. Por ejemplo con:

docker rmi paco/ubuntumod:22

Más información de los comandos en: