Cómo instalar Docker en Linux Ubuntu (proceso idéntico para otras distribuciones de Linux como Debian) y cómo descargar, desplegar y ejecutar la imagen «hello-word» de pruebas. Mostramos los contenedores en ejecución, los detenemos y los eliminamos. Ejecutamos un contenedor de un sitio web estático simple para mostrar el «mapeo» de puertos de Docker.

Qué es Docker

Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software. Proporciona una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos.

Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que los contenedores independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.​

Docker es una herramienta que puede empaquetar una aplicación y sus dependencias en un contenedor virtual que se puede ejecutar en cualquier servidor Linux. Esto ayuda a permitir la flexibilidad y portabilidad en donde la aplicación se puede ejecutar, ya sea en las instalaciones físicas, la nube pública, nube privada, etc.

Instalar Docker en Linux Ubuntu

En primer lugar ejecutaremos el siguiente comando para actualizar la lista de paquetes disponibles y sus versiones en Linux Debian:

sudo apt-get update

Ejecutaremos el siguiente comando para instalar los paquetes dependientes que necesitará Docker:

sudo apt-get install 
    ca-certificates 
    curl 
    gnupg 
    lsb-release
Instalar Docker en Linux Ubuntu

Agregaremos las GPG key de Docker:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Agregamos un repositorio estable (stable) de Docker con el comando:

echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu 
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Instalar Docker en Linux Ubuntu

Volvemos a ejecutar el siguiente comando para actualizar versiones de paquetes, es necesario volver a ejecutarlo para que se agreguen y actualicen los nuevos paquetes del repositorio de Docker agregado anteriormente:

apt-get update

Instalamos Docker con el comando:

apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Instalar Docker en Linux Ubuntu

Se iniciará la instalación de Docker:

Instalar Docker en Linux Ubuntu

Ejecutando imagen «Hola mundo» en Docker para verificar que se ha instalado correctamente

Ejecutaremos el siguiente comando, que la primera vez que lo ejecutamos detectará que la imagen «hello-world» no está instalada en Docker, por lo que la descargará y desplegará. Tras descargarla y desplegarla la ejecutará:

sudo docker run hello-world

Si lo volvemos a ejecutar una segunda vez, ejecutará la imagen directamente dado que ya está descargada y desplegada:

Ejecutando imagen "Hola mundo" en Docker para verificar que se ha instalado correctamente

Nos mostrará el siguiente texto, indicando que en la primera ejecución no lo encuentra y lo descarga e instala y ejecuta. En la segunda ejecución, como ya está instalado, sólo lo ejecuta:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:80f31da1ac7b312ba29d65080fddf797dd76acfb870e677f390d5acba9741b17
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Ejecutar imagen de sitio web estático en Docker y acceso externo

Ejecutaremos el siguiente comando para instalar la imagen «static-site», que como siempre en Docker, si no la encuentra en local la descargará e instalará:

sudo docker run --name static-site -e AUTHOR="ProyectoA" -d -P dockersamples/static-site

En el caso de la imagen «static-site», necesita ejecutarse en modo separado, por ello hemos usado el comando -d. Este es un requisito de esta imagen de ejemplo.

Para ver los puertos levantados al levantar esta imagen, ejecutaremos el comando:

sudo docker port static-site

Que nos devuelve:

443/tcp -> 0.0.0.0:49157
443/tcp -> :::49157
80/tcp -> 0.0.0.0:49158
80/tcp -> :::49158
Ejecutar imagen de sitio web estático en Docker y acceso externo

Por lo tanto ya tenemos iniciado el contenedor de sitio web estático en local, si queremos acceder desde local podemos ejecutar el comando:

curl localhost:49158

El puerto 49158 es el que el Docker ha asignado al equivalente al 80 en el contenedor del static-site.

Nos devolverá el contenido del fichero index del sitio web estático del contenedor del Docker:

Ejecutar imagen de sitio web estático en Docker y acceso externo

Si queremos acceder al servidor web del contenedor del Docker desde un equipo externo, podemos ejecutar el contenedor con este comando, para mapear los puertos:

sudo docker run --name static-site -e AUTHOR="ProyectoA" -d -p 8888:80 dockersamples/static-site

El comando anterior supone que no existe la imagen «static-site», en caso de existir en Docker, renombraremos la imagen a ejecutar, por ejemplo a static-site-2.

Listar, detener y eliminar contenedores iniciados en Docker

Para mostrar un listado de todos los contenedores iniciados en Docker ejecutaremos el comando:

sudo docker ps

Que nos devolverá algo así:

Listar, detener y eliminar contenedores iniciados en Docker

En nuestro entorno de Docker, tenemos en ejecución el contenedor con ID 9f6a36b477d4. Si queremos detenerlo ejecutaremos el comando:

sudo docker stop 9f6a36b477d4

Y si queremos eliminarlo completamente ejecutaremos:

sudo docker rm 9f6a36b477d4
Listar, detener y eliminar contenedores iniciados en Docker