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
[root@localhost sergio.portillo]# mkdir ubuntu-ip-nano [root@localhost 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.
[root@localhost 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.
[root@localhost ubuntu-ip-nano]# docker build -t tutorialesit/ubuntu-ip-nano .
Comprobamos que efectivamente tenemos la imagen el local.
[root@localhost 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.
[root@localhost ubuntu-ip-nano]# docker run -it --name ubuntumod tutorialesit/ubuntu-ip-nano bash
Y comprobar que efectivamente funcionan los comandos ping y nano
root@b8ad09cfae0c:/# 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
- Visualización en tiempo real del estado de un Clúster en Docker
- Que son y como se configuran los servicios en Docker
- Como crear un Clúster en Docker
- Instalar Docker en CentOS 8
- Instalar Docker en Windows Server 2019
- Instalar Docker en Windows 10
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.