Imagenes Docker

Las imagenes Docker son plantillas (que incluyen una aplicación, los binarios y las librerias necesarias) que se utilizan para construir contenedores Docker y ejecutarlos (los contenedores ejecutarán una imagen previamente compilada).

 

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:

 

 

1. PASOS PARA CREAR UNA IMAGEN DOCKER

 

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:

 

  • ADD
  • COPY
  • ENV
  • EXPOSE
  • FROM
  • LABEL
  • STOPSIGNAL
  • USER
  • VOLUME
  • WORKDIR

 

–> 2. Después creamos la imagen con docker build, a partir del Dockerfile creado.

–> 3. Y finalmente la ejecutamos con docker run.

 

 

2. Crear una imagen Docker (Ejemplo creando un “Hola Mundo“)

 
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"

 
docker image hola mundo hello world

 

Después creamos la imagen de Docker:

docker build -t hola .

 

Y finalmente la ejecutamos con:

docker run hola

 

docker build hello world
 

 

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.
 
docker container ls hello world

 

, aunque también podemos verlo en la lista de contenedores creados, en Portainer.

 
contenedores docker 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 …).
 

 

2.1 ¿Qué es Alpine Linux?, ¿Por qué lo incluimos en la linea FROM?

 
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
 
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.
 

 

 

 

3. Descargar una imagen Docker ya creada.

 
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:
 

 

 

3.1 Hypriot OS

 
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/
 

 
hypriot docker blog
 

 

Y a continuación todas las imagenes de Hypriot OS para Docker en Raspberry Pi (ARM):

 

hypriot docker hub images

 

 
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:
 
docker pull armhf hello world
 
podemos ver que se descarga con

docker pull hypriot/armhf-hello-world

 
docker pull image

 

 

4. Listar las imagenes DOCKER disponibles en nuestro sistema

 
Y para ver las imagenes que tenemos ya descargadas y compiladas en nuestra máquina Docker ejecutaremos:

docker image ls

 
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

 

 

5. Otros comandos de docker image

 

  • build: Construye una imagen a partir de un Dockerfile.
  • history: muestra el historial de una imagen.
  • import: importa el contenido de un comprimido para crear una imagen de sistema de archivos.
  • inspect: muestra información detallada sobre una o más imagenes:
  • load: carga una imagen desde un archivo .tar
  • ls: lista las imagenes.
  • prune: Desecha las imagenes no utilizadas.
  • pull: extrae una imagen o un repositorio de un registro.
  • push: sube una imagen o un repositorio a un registro.
  • rm: elimina una o más imagenes.
  • save: guarda una o má simagenes a un archivo .tar
  • tag: crea una etiqueta imagen_objetivo que refiere a una imagen origen.

 

docker image

 

 

6. CONCLUSIÓN

 

  • Hemos visto un pequeño resumen acerca de las imagenes Docker, cómo se crean, de dónde vienen, cómo se utilizan ..
  • También hemos hablado de los registros que utiliza Docker más a menudo.
  • Y hemos hablado de Hypriot OS para Raspberry Pi y de las imagenes disponibles para descargar y testear en nuestras Raspberrys.

 

Ahora solo os queda sacarle el jugo a este artículo y ponerse a practicar lo comentado!