Cómo iniciar un contenedor Docker con Linux Ubuntu para pruebas en menos de un minuto. Cómo instalar paquetes en Linux Ubuntu (ping, wget, nano, nginx, …). Mostramos cómo hacer persistente un contenedor de forma rápida con una imagen.
- Requisitos para iniciar contenedor con Linux en Docker.
- Desplegar y ejecutar contenedor con Linux Ubuntu en Docker.
- Instalar algunos comandos/paquetes/herramientas básicas de Linux Ubuntu en el contenedor Docker.
- Forma rápida de hacer «persistencia» en contenedor Docker.
Requisitos para iniciar contenedor con Linux en Docker
Necesitaremos disponer de Docker instalado en el equipo, bien sea en Linux, con indicamos en este artículo:
O en Windows, como indicamos en este otro artículo:
Necesitaremos disponer de conexión a internet en el equipo donde se esté ejecutando Docker.
Antes de instalar cualquier contenedor de terceros, nos aseguraremos de que es de confianza. Docker tiene su propio repositorio de contenedores, los oficiales (supuestamente de confianza) vienen indicados con la etiqueta: DOCKER OFFICIAL IMAGE.

Aunque este «sello» tampoco garantiza la seguridad del contenedor, de ello depende también el sistema operativo que incluya, los paquetes instalados y su configuración base.
Desplegar y ejecutar contenedor con Linux Ubuntu en Docker
Desde la línea de comandos (símbolo de sistema de MS-DOS en Windows, o bien shell de comandos en Linux), ejecutaremos el siguiente comando Docker para descargar e instalar el contenedor «ubuntu»:
1 |
docker pull ubuntu |
Docker comprobará si el contenedor ya está en local, si no lo encuentra lo buscará en su repositorio, si lo encuentra lo descargará e instalará:

Si queremos ejecutar el contenedor descargado e instalado, ejecutaremos el comando:
1 |
docker run ubuntu |
Este contenedor, si se ejecuta en este modo, se iniciará y se detendrá. Para ejecutarlo y acceder a su shell de comandos, lo haremos con el siguiente comando Docker:
1 |
docker run -ti ubuntu bash |

A partir de ahora podremos hacer pruebas en el contenedor Linux Ubuntu de Docker como si de un equipo Linux se tratara. Hay que tener en cuenta que se trata de un contenedor (no de una máquina virtual completa), por ello tiene la ventaja de ocupar muy poco, pero con la desventaja de que apenas tiene paquetes y comandos instalados, sólo los básicos.
Se puede ejecutar el contenedor Ubuntu con el siguientes parámetros (–restart=no –runtime=runc) y así no se detendrá aunque no entremos en modo shell (bash) directamente:
1 |
docker run --hostname=pcproyectoa --restart=no --runtime=runc -t -d ubuntu |
De esta forma, la consola nos quedará libre para seguir ejecutando otros comandos docker o de Windows/Linux. Para acceder a la shell del contenedor Ubuntu iniciado, desde cualquier otra consola o desde la misma, ejecutaremos:
1 |
docker exec -ti ubuntu bash |
Siempre hay que tener en cuenta los nombres de los contenedores/imágenes en Docker, que pueden variar según la ejecución. Si nos da error de que no encuentra el contenedor, lo listaremos previamente para ver cual es su nombre o ID con:
1 |
docker container ps -a |
Instalar algunos comandos/paquetes/herramientas básicas de Linux Ubuntu en el contenedor Docker
Antes de continuar, en el modo de ejecución anterior, cualquier cambio que hagamos en el contenedor, se eliminará una vez detenido (en cuanto salgamos de la línea de comandos). En el siguiente punto de este artículo explicamos cómo hacer persistente un contenedor.
El contenedor «ubuntu», al descargarse e instalarse, crea una red «bridge» que permite que tenga conexión a Internet. Con esto podremos instalar paquetes, dado que viene con lo mínimo (ni siquiera incluye nano, ping, wget, …).
En primer lugar, como si de una máquina virtual se tratase, actualizaremos la lisa de paquetes disponibles en el sistema Linux, con:
1 |
apt-get update -y |

Y para instalar el paquete que incluye el ping ejecutaremos:
1 |
apt-get install -y iputils-ping |
A partir de ahora tendremos disponible el comando ping.
De la misma forma, podemos instalar nano:
1 |
apt-get install -y nano |
Y wget:
1 |
apt-get install -y wget |
Incluso paquetes más «avanzados» como nginx (servidor web similar a Apache):
1 |
apt-get install -y nginx |
Hay que tener en cuenta, a efectos de seguridad, que el modo de red que ha establecido Docker para este contenedor permite visibilidad entre él y nuestra red (la del equipo anfitrión). Si hacemos ping desde el contenedor Linux a cualquier equipo (físico o virtual) de nuestra red, responderá con OK. Al contenedor le habrá asignado una IP virtual del tipo 172.17.0.2:

Por lo tanto, si lo tenemos configurado de esta forma, deberemos proceder con precaución en las posibles pruebas que realicemos en el equipo Linux.
Forma rápida de hacer «persistencia» en contenedor Docker
Para poder ejecutar un contenedor y que los cambios que hagamos en él queden almacenados (persistencia), Docker tiene varios métodos: volúmenes, vínculos directos, etc. En este caso, puesto que queremos hacer persistencia de todo el sistema (de todo el contenedor), realizaremos una imagen del mismo en el momento en que queramos guardar los cambios realizados. Esto es similar (salvando las distancias) a un snapshot de una máquina virtual.
Antes de continuar, indicar que hay otras formas de persistencia, seguramente más eficientes, pero esta que explicamos es de las más rápidas de aplicar.
Para realizar la imagen, cuando tenemos el contenedor iniciado (sin detenerlo porque si lo detenemos se pierden todos los cambios), en primer lugar listamos los contenedores disponibles (para obtener el ID), con:
1 |
docker container ls -a |
Anotaremos el «CONTAINER ID» del contenedor al que queramos hacer la imagen y ejecutaremos el siguiente comando para hacer dicha imagen:
1 |
docker commit 6e29a5f26a8a |
Cambiando «6e29a5f26a8a» por nuestro ID obtenido.
Listaremos las imágenes disponibles para verificar que se ha creado con:
1 |
docker images -a |

Podremos salir del contenedor que teníamos en ejecución, escribiendo el comando «exit»:

Este contenedor, si lo volvemos a iniciar, aparecerá de nuevo «limpio», sin nuestras modificaciones. En cambio, si ejecutamos la imagen, accederemos al contenedor con nuestros cambios. Para ejecutar una imagen usaremos el comando:
1 |
docker run -ti 38e5d37d6709 bash |
Donde «38e5d37d6709» será el ID de la imagen, obtenido con el comando anterior docker images -a. La imagen se ejecutará y nos mostrará la línea de comandos de Linux, con los datos guardados. En nuestro caso, hemos instalado el comando «ping», que ahora lo tendremos disponible:

Si queremos establecer un nombre (tag) para la imagen, ejecutaremos el siguiente comando:
1 |
docker tag 38e5d37d6709 ubuntu_22 |
Donde «38e5d37d6709» será el ID de la imagen a nombrar y «ubuntu_22» el nombre que le daremos.