Instalar Docker en Ubuntu server

En primer lugar instalamos Docker Engine.

Para la instalación nos vamos a valer de la documentación oficial, a través de este enlace:

–> Instalación de Docker Engine en Ubuntu

Tal y como podemos observar, nos detalla que versión de ubuntu es la indicada. En el momento en que escribo este post, las versiones soportadas son las siguientes:

  • Ubuntu Kinetic 22.10
  • Ubuntu Jammy 22.04 (LTS)
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

Para este tutorial, haremos uso de una instalación Ubuntu Jammy 22.04 (LTS), que ya tengo instalada en el software de montaje de máquina virtual Virtualbox.

Abro el terminal y procedo a seguir los pasos:

Primero vamos a comprobar las actualizaciones con el siguiente comando cpn un apt-get update y a continuación instalamos algunas dependencias necesarias:

sudo apt-get update


sudo apt-get install \
    ca-certificates \
    curl \
    gnupg

Añadimos los certificados de Docker:

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

A continuación añadimos los repositorios oficiales de Docker, a nuestro source list de Ubuntu,

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

De nuevo hacemos un apt-update para que actualice todo lo instalado hasta ahora en lo que concierne a Docker:

sudo apt-get update

Es ahora cuando comienza la instalación de Docker. En primer lugar con el siguiente comando vamos a instalar:

  • Docker engine
  • Docker-cli
  • container.io
  • buildx-plugin
  • docker-compose-plugin
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Para comprobar que la instalación ha sido exitosa, vamos generar el primer contenedor docker hello-world, y así confirmar que todo ha ido bien,

sudo docker run hello-world

Cómo se puede observar en la imagen, Unable to find image ‘hello-world:latest’ locally indica que no puede obtener la imagen localmente y a continuación nos indica con el siguiente enunciado –> latest: Pulling from library/hello-world, que va a proceder a extraerlo del repositorio oficial de Docker.

A continuación –>

Hello from Docker!

This message shows that your installation appears to be working correctly.

Nos indica que la instalación parece que ha ido bien.

A continuación, vamos a comprobar la versión de Docker instalada, con el siguiente comando:

sudo docker -v

Vemos como nos muestra la versión 23.0.3, por lo tanto todo va bien.

A continuación vamos a consultar la versión del Docker compose instalado,

  sudo docker compose version

Y vemos como es la versión 2.17.2.

A continuación, nos vamos abajo del todo de la documentación de instalación que estamos siguiendo, hasta llegar al enlace Post-installation steps for Linux

Siguiendo esos pasos, nos permitirá optimizar mejor nuestro entorno Linux para un desempeño de Docker más eficiente.

Primero añadimos un grupo de Docker,

sudo groupadd docker

Y comprobamos que el grupo docker ya existe,

A continuación vamos añadir nuestro usuario al grupo docker que se ha creado,

sudo usermod -aG docker $USER

A continuación vamos a configurar un uso optimizado de los Logs, para evitar problemas de rendimiento, delimitando la cola de archivos logs y su tamaño. De ese modo, lo configuramos de manera que cuando tenga una cantidad especifica de logs, los elimina autómaticamente, además de fijar un tamaño máximo por cada archivo. Esto es importante en entornos de producción, para un despliegue y desempeño de la aplicación óptimo. Para realizar esta operación, de nuevo nos desplazamos hacia el final de la página de la documentación que estamos siguiendo, y clic en el enlace log rotation.

Para ello debemos crear un archivo llamado daemon.json en un la siguiente ubicación –> etc/docker/. Uso nano por línea de comandos de este modo,

sudo nano etc/docker/daemon.json

Y siguiendo lo que nos indica la docu, debemos de pegar el siguiente código en dicho archivo y guardarlo,

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3" 
  }
}

Nota.- Si no encuentra la ruta /etc/docker, debemos de crear dicho directorio con el comando,

sudo mkdir etc/docker

Como se puede apreciar en el código, está delimitando el máximo de tamaño por cada archivo de log a 10mb, y un límite de archivos log de 3. Por lo tanto al cuarto archivo, borra el más antiguo,  asi sucesivamente. A continuación basta con teclear ctrl+O para guardar, y ctrl+X para salir,

Por último vamos reiniciar la máquina para que se apliquen los cambios,

sudo reboot

A continuación, para comprobar que la instalación ha sido creada satisfactoriamente, vamos a teclear el siguiente comando, que nos muestra todos los contenedores y su estado,

docker ps -a

Y efectivamente, observamos como muestra el docker hello-world que hemos creado.