Las imágenes de Docker son esencialmente una instantánea de un contenedor. Las imágenes se crean con el comando build, que crean un contenedor cuando se inicia con run. Una vez creada una imagen, se pueden almacenar en el Hub Docker.
En este tutorial, vamos a explorar las imágenes de Docker con el siguiente enfoque:
- Administración con imágenes localmente en nuestro host.
- Creación de imágenes básicas.
- Cargar imágenes en Hub Docker.
Requisitos
Alguna distribución de GNU/Linux con Docker instalado. Si no sabes como instalar Docker en tu Linux aquí te explicamos como.
Buscando imágenes de Docker
Una de las características más importantes de Docker, es que todo el mundo puede crear imágenes para todo tipo de propósitos. Algunas de ellas son subidas a Docker Hub, donde estarán a nuestra disposición y las podremos descargar. Además, en Docker Hub también encontraremos imágenes oficiales a parte de las imágenes de terceros.
Por ejemplo, vamos a buscar una imagen de GitLab:
Como podemos observar, Docker nos ofrece muchas posibilidades. Generalmente, es recomendable instalar imágenes oficiales o que tengan mucha puntuación.
Descargar imágenes de Docker
Docker descargará automáticamente cualquier imagen que le pidamos. El comando docker pull permite descargar la imagen más reciente de ese repositorio. Sin embargo, se puede especificar que versión de la imagen queremos descargar.
Por ejemplo, si queremos descargar Ubuntu 15.04 lo podremos hacer con:
# docker pull ubuntu:15.04
Si por lo contrario queremos descargarnos la última versión que haya en el repositorio, tan sólo deberemos de escribir:
# docker pull gitlab/gitlab-ce
Listando imágenes
Para obtener un listado de todas las imágenes disponibles para montar en un contenedor, es decir, las imágenes que nos hemos descargado, debemos de ejecutar lo siguiente:
# docker images
Con este comando podremos ver el repositorio de la imagen, la versión (TAG), el ID de la imagen, cuando fue creado y el tamaño completo de la imagen.
Actualización y creación de imágenes
Si queremos realizar cambios en una imagen en concreto lo que tendremos que hacer es crear un contenedor de la imagen:
# docker run -t -i ubuntu /bin/bash
Como podremos observar, el prompt se nos habrá modificado por el ID del contenedor:
Ahora instalaremos varios paquetes para crear una propia imagen:
# apt install wget nano apache2
Una vez haya acabado la instalación de estos paquetes, saldremos del contenedor con el comando exit.
Lo que tenemos ahora es un contenedor basado en la instancia de Ubuntu modificado por nosotros. Ahora crearemos una copia de este contenedor a una imagen con el nombre de apache-ubuntu. Para eso primero tenemos que buscar el ID del contenedor:
# docker ps -a
Una vez hemos obtenido el ID, creamos la nueva imagen con el nombre apache-ubuntu ejecutando el siguiente comando:
# docker commit [ID_container] apache-ubuntu
Para verificar que se ha creado correctamente nuestra imagen:
# docker images
Eliminar imágenes
Para eliminar una imagen, por ejemplo la que hemos creado en el apartado anterior, tan sólo debemos de ejecutar este comando:
# docker image rm apache-ubuntu
Crear una imagen con un DockFile
Se pueden generar imágenes a partir de Dockerfiles, unos ficheros que crearemos manualmente y que contendrán una secuencia de instrucciones que por medio de una imagen base nos permite crear de otras.
Para crear un Dockerfile nos hace falta un editor de texto y saber de antemano la sintaxis de los comandos para luego poder construirla.
Crearemos un fichero llamado Dockerfile (sin extensión alguna):
# touch Dockerfile
Y añadiremos lo siguiente:
FROM ubuntu
MAINTAINER cloudingtutos <soporte@clouding.io>
ENV HOME /root
RUN apt-get update
RUN apt-get install -y apache2 wget
EXPOSE 80
CMD service apache2 start
Una vez creado, lo que vamos hacer es hacer un build de la imagen base con nuestro fichero docker:
# docker build -t ubunpache .
La estructura de este comando es: docker build -t [NombreDeLaImagen] /path/directorioDelDockFile/
Y si mostramos el listado de nuestras imágenes:
Publicar imagen en Docker Hub
Docker Hub es un repositorio donde mantener imágenes de Docker de manera pública o privada. De esta manera podremos guardar las imágenes que hayamos creado nosotros. Docker Hub proporciona muchas características como un repositorio para imágenes de Docker, autentificaciones de usuarios, compilaciones de imágenes automatizadas, integración con GitHub y gestión de grupos.
Para trabajar con Docker Hub, necesitarás crear una cuenta en el siguiente enlace. Después de verificar la dirección de correo electrónico, su registro se completará. Ahora ya podremos comenzar a publicar imágenes en nuestro repositorio.
Antes de subir una imagen a Docker Hub, es importante que se le de una etiqueta. Para ello primero deberemos de identificar la ID de la imagen:
# docker tag e6df1a72e3e5 cloudingtutos/apache-instance:ubuntu
Una vez etiquetada, pasamos hacer un push:
# docker push cloudingtutos/apache-instance:ubuntu
Y si accedemos vía web, podremos observar que tenemos una imagen: