Cómo instalar Docker y Docker Compose en Debian 11

Docker es una plataforma gratuita y de código abierto para desarrollar, enviar y ejecutar aplicaciones en un entorno de contenedores. Te permite separar tu aplicación de tu infraestructura. Esto hará que sea más fácil, sencillo y seguro construir, desplegar y gestionar contenedores. Docker está diseñado para crear un entorno de desarrollo local.

Si quieres crear más de un contenedor para tu aplicación, debes utilizar Docker-compose. Docker-compose es una herramienta que sirve para definir y compartir aplicaciones con varios contenedores. Con Docker compose, puedes utilizar el archivo YAML para definir todos los servicios y ejecutarlos a la vez mediante un simple comando.

En este tutorial, te mostraremos cómo instalar Docker y Docker compose en un sistema Debian 11.

Requisitos previos

  • Un servidor que ejecute Debian 11.
  • Una contraseña de root configurada en el servidor.

Cómo empezar

En primer lugar, se recomienda actualizar la caché de los paquetes del sistema a la última versión. Puedes actualizarlos utilizando el siguiente comando:

apt-get update -y

Una vez que hayas terminado, instala otras dependencias necesarias utilizando el siguiente comando:

apt-get install apt-transport-https software-properties-common ca-certificates curl gnupg lsb-release -y

Instalar Docker

Por defecto, la última versión de Docker no está incluida en el repositorio oficial de Debian 11. Así que tendrás que añadir el repositorio de Docker CE a la APT. Puedes añadirlo con el siguiente comando:

curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

Una vez añadido el repositorio de Docker, actualiza el repositorio e instala Docker CE con el siguiente comando:

apt-get update -y
apt-get install docker-ce docker-ce-cli -y

Tras la instalación, verifica la versión de Docker CE con el siguiente comando:

docker version

Deberías obtener la siguiente salida:

Client: Docker Engine - Community
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:54:22 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:52:31 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Gestionar los servicios Docker

Puedes gestionar el servicio Docker fácilmente utilizando la utilidad systemd.

Para iniciar un servicio Docker, ejecuta el siguiente comando:

systemctl start docker

Para reiniciar un servicio Docker, ejecuta el siguiente comando:

systemctl restart docker

Para detener un servicio Docker, ejecuta el siguiente comando:

systemctl stop docker

Para que el servicio Docker se inicie al reiniciar el sistema, ejecuta el siguiente comando:

systemctl enable docker

Para comprobar el estado de Docker, ejecuta el siguiente comando:

systemctl status docker

Deberías ver el estado de Docker en la siguiente salida:

? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-09-10 07:19:35 UTC; 27s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 29018 (dockerd)
      Tasks: 7
     Memory: 32.6M
        CPU: 407ms
     CGroup: /system.slice/docker.service
             ??29018 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809035575Z" level=info msg="scheme \"unix\" not registered, fallback to def>
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809219999Z" level=info msg="ccResolverWrapper: sending update to cc: {[{uni>
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809410545Z" level=info msg="ClientConn switching balancer to \"pick_first\">
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.897972507Z" level=info msg="Loading containers: start."
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.186940748Z" level=info msg="Default bridge (docker0) is assigned with an IP>
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.298681937Z" level=info msg="Loading containers: done."
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.356364773Z" level=info msg="Docker daemon" commit=75249d8 graphdriver(s)=ov>
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.357524464Z" level=info msg="Daemon has completed initialization"
Sep 10 07:19:35 debian11 systemd[1]: Started Docker Application Container Engine.
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.401626151Z" level=info msg="API listen on /run/docker.sock"

Ejecutar un contenedor con Docker

Puedes utilizar el comando docker run para descargar cualquier imagen y ejecutarla dentro del contenedor.

Por ejemplo, ejecuta el siguiente comando para descargar la imagen de Debian y ejecutar un contenedor:

docker run --rm -it --name test debian:latest /bin/sh

Deberías obtener la siguiente salida:

Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
955615a668ce: Pull complete
Digest: sha256:08db48d59c0a91afb802ebafc921be3154e200c452e4d0b19634b426b03e0e25
Status: Downloaded newer image for debian:latest
#

Ejecuta el siguiente comando para salir del contenedor Debian

#exit

Instalar Docker Compose

Por defecto, Docker Compose no está disponible en el repositorio por defecto de Debian 11. Así que tendrás que descargar el binario de Docker compose desde Github.

Ejecuta el siguiente comando para descargar el binario de Docker compose:

curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-Linux-x86_64 | cut -d '"' -f 4 | wget -qi -

Una vez completada la descarga, establece el permiso de ejecución para el archivo descargado y muévelo a la ruta del sistema mediante el siguiente comando:

chmod +x docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

A continuación, verifica la versión de Docker compose mediante el siguiente comando:

docker-compose version

Deberías ver la siguiente salida:

docker-compose version 1.29.2, build 5becea4c
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

Comandos de Docker Compose

Para ejecutar un archivo Docker compose, ejecuta el siguiente comando:

docker-compose up -d

Para detener todos los contenedores en ejecución, ejecuta el siguiente comando:

docker-compose down

Para poner en pausa y deshacer el contenedor en ejecución, ejecuta el siguiente comando:

docker-compose pause
docker-compose unpause

Para listar todos los contenedores en ejecución, ejecuta el siguiente comando:

docker-compose ps

Para comprobar los registros de los servicios en ejecución, ejecuta el siguiente comando:

docker-compose logs

Conclusión

Enhorabuena! has instalado con éxito Docker y Docker Compose en Debian 11. Ahora puedes construir, enviar y ejecutar tu aplicación utilizando Docker y Docker Compose.