También podemos decir que las imagenes Docker son instancias de un contenedor.
Un contenedor se inicia ejecutando una imagen. El archivo Dockerfile define una imagen, y por tanto cómo será el contenedor que se creará a partir de esa imagen.
Y ese Dockerfile (que es un documento de texto) contiene todos los comandos que normalmente se ejecutan manualmente para construir una imagen para Docker. Docker puede leer las instrucciones de el archivo Dockerfile y construir una imagen para Docker automáticamente.
En este artículo:
Vamos a ver un resumen de los pasos necesarios para crear una imagen en Docker.
–> 1. Creamos nuestro Dockerfile, teniendo en cuenta la lista de instrucciones de los Dockerfile:
–> 2. Después creamos la imagen con docker build, a partir del Dockerfile creado.
–> 3. Y finalmente la ejecutamos con docker run.
Las imagenes Docker se crean con un archivo llamado Dockerfile.
Crearemos una imagen creando el típico Hola Mundo (Hello World).
Así que primero creamos un Dockerfile con este contenido:
FROM alpine
CMD echo "hello-world"
Después creamos la imagen de Docker:
docker build -t hola .
Y finalmente la ejecutamos con:
docker run hola
Y en la sección de Contenedores podremos ver que el contenedor que se ha creado con la anterior imagen está creado y funcionando, aunque en este caso, si ha terminado su ejecución (solo saca por pantalla: hola mundo) ya no estaría en ejecución.
, aunque también podemos verlo en la lista de contenedores creados, en Portainer.
Sobre la imagen que hemos creado, podemos fijarnos en que la primera linea es:
FROM alpine
La instrucción FROM inicializa una nueva etapa de compilación, y establece la imagen base para las instrucciones posteriores.
En este caso utiliza la imagen de ALPINE disponible en los repositorios públicos como los que hemos nombrado anteriormente (Docker Hub, Docker Cloud …).
Alpine Linux es una distro de Linux sencilla, simple y orientada a la seguridad y la eficiencia de recursos. La imagen solo ocupa 5 MB de tamaño, y proporciona acceso a un repositorio de paquetes muy completo.
–> Foro de Alpine Linux
La instrucción FROM inicializa una nueva etapa de compilación y establece la Imagen base para las instrucciones posteriores. Por eso desde esta instrucción llamamos a la imagen base de Alpine Linux en este caso.
Si queremos utilizar una imagen ya creada, podemos hacerlo descargándola desde un registro a nuestra máquina Docker.
Registros donde podemos encontrar imagenes Docker:
Por ejemplo, aquí tenemos la imagen ya creada del “Hola Mundo” (Hello World) por Hypriot (blog especializado en Docker, con su propio sistema operativo Hypriot OS para Raspberry Pi, y decenas de artículos sobre Docker en Raspberry Pi).
Hello World de Hypriot OS para ARM: https://hub.docker.com/r/hypriot/armhf-hello-world/
Y a continuación todas las imagenes de Hypriot OS para Docker en Raspberry Pi (ARM):
Descargaremos una imagen ya creada, buscándola en el registro correspondiente, y usando el comando docker pull. Podremos ver cómo hacerlo desde el registro en el que se encuentre. Por ejemplo, en este caso el hello world de Hypriot:
podemos ver que se descarga con
docker pull hypriot/armhf-hello-world
Y para ver las imagenes que tenemos ya descargadas y compiladas en nuestra máquina Docker ejecutaremos:
docker image ls
Después podemos ejecutar esa aplicación con:
docker run nombre_imagen
Las imagenes podemos compartirlas por medio del registro.
Y las etiquetaremos con:
docker tag image username/repository:tag
Ahora solo os queda sacarle el jugo a este artículo y ponerse a practicar lo comentado!