Creación de imágenes personalizadas en Docker

En esta entrada voy a explicaros como podéis realizar vuestras propias imágenes personalizadas en Docker para poder desplegar contenedores basados en dichas imágenes listos para usar.

Voy a explicarlo con un ejemplo sencillo en el que utilizaremos la última imagen oficial de Ubuntu y le instalaremos las utilidades de red para poder realizar Ping y el editor de ficheros nano, de esta forma cada vez que despleguemos un contenedor basado en esta imagen dispondremos de estas herramientas y nos evitaremos tener que instalarlas.

Creación archivo Dockerfile

Los Dockerfile son los archivos que contienen las instrucciones necesarias para crear nuestra imagen. Este fichero y todos los que necesitemos deben estar guardados dentro de un directorio (build context) por lo que el primer paso será crear un directorio llamado ubuntu-ip-nano

[[email protected] sergio.portillo]# mkdir ubuntu-ip-nano
[[email protected] sergio.portillo]# cd ubuntu-ip-nano/

Dentro del nuevo directorio creamos un fichero llamado Dockerfile con nuestro editor de texto favorito, en mi caso nano.

[[email protected] ubuntu-ip-nano] nano Dockerfile

En este fichero escribiremos las siguientes instrucciones que le indicarán a Docker que debe coger la última versión de la imagen de Docker, actualizar los repositorios e instalar los paquetes iputils y nano.

FROM ubuntu:latest
RUN apt-get update && apt-get install -y iputils-ping && apt-get install -y nano

Guardamos el fichero y ejecutamos el siguiente comando para generar nuestra imagen y guardarla en local.

El parámetro -t nos permitirá etiquetar nuestra imagen y el . al final le indica al comando que el build context es el directorio actual.

[[email protected] ubuntu-ip-nano]# docker build -t tutorialesit/ubuntu-ip-nano .

Comprobamos que efectivamente tenemos la imagen el local.

[[email protected] ubuntu-ip-nano]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
tutorialesit/ubuntu-ip-nano   latest              6c726360b992        19 hours ago        101MB
hello-world                   latest              bf756fb1ae65        10 months ago       13.3kB

Ya sólo nos queda crear nuestro contenedor utilizando la imagen personalizada y acceder al mismo por consola.

[[email protected] ubuntu-ip-nano]# docker run -it --name ubuntumod tutorialesit/ubuntu-ip-nano bash

Y comprobar que efectivamente funcionan los comandos ping y nano

[email protected]:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=127 time=14.5 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=127 time=14.4 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=127 time=12.7 ms

Este es un ejemplo sencillo pero os puede servir de base para realizar vuestras propias imágenes personalizadas y adaptarlas a vuestras necesidades.

Espero os haya sido de utilidad.

Entradas relacionadas

Deja un comentario