Docker es una plataforma de contenedorización de código abierto. Permite a los desarrolladores empaquetar aplicaciones en contenedores:componentes ejecutables estandarizados que combinan el código fuente de la aplicación con las bibliotecas del sistema operativo (SO) y las dependencias necesarias para ejecutar ese código en cualquier entorno.
Docker es un conjunto de productos de plataforma como servicio que utilizan la virtualización a nivel del sistema operativo para entregar software en paquetes denominados contenedores. Los contenedores están aislados unos de otros y agrupan su propio software, bibliotecas y archivos de configuración; pueden comunicarse entre sí a través de canales bien definidos.
Compruebe también estos enlaces:
- Cómo instalar y usar Docker en Ubuntu 20.04
- Cómo instalar y configurar docker en Centos 8
- Cómo instalar y configurar docker en Fedora 34/35
- Introducción a Docker Compose con ejemplos
- Docker como agente de compilación:ejecute compilaciones de Jenkins en Docker
Requisitos
Para seguir, asegúrese de tener:
- Un sistema Debian 11 actualizado
- Acceso a Internet desde el sistema
- Acceso raíz o usuario con acceso sudo
- Conocimiento de terminal Linux
Tabla de contenido
- Asegúrese de que los paquetes de su sistema estén actualizados
- Desinstalar versiones anteriores si las hay
- Instalar el motor docker usando el repositorio
- Instalar Docker Engine desde un paquete
- Instalar usando el script de conveniencia
- Verificar instalación
- Ejecutar el comando Docker sin Sudo
- Desinstalar docker cuando ya no se necesita
1. Asegúrese de que los paquetes de su sistema estén actualizados
Antes de continuar, asegurémonos de que sus paquetes estén actualizados
sudo apt update
sudo apt upgrade -y
2. Desinstalar versiones anteriores si las hay
Los paquetes que proporcionan versiones anteriores de Docker son docker
, docker.io
o docker-engine
.
Utilicemos este comando para asegurarnos de que estos paquetes no existen en nuestro sistema:
sudo apt-get remove docker docker-engine docker.io containerd runc
Está bien si apt-get informa que ninguno de estos paquetes está instalado.
Instalando ventana acoplable
Puede instalar Docker Engine de diferentes maneras, según sus necesidades:
- Puede configurar los repositorios de docker e instalar docker usando apt
- Puedes descargar los paquetes DEB e instalarlos manualmente
- Puede optar por utilizar scripts de conveniencia automatizados para instalar Docker
3. Instale el motor docker usando el repositorio
En un host nuevo, los repositorios de Docker no existen. Por primera vez en una nueva máquina host, debe configurar el repositorio de Docker. Luego, puede instalar y actualizar Docker desde el repositorio.
Instalemos los siguientes paquetes para permitir que apt use un repositorio sobre HTTPS:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
Agregue la clave GPG oficial de Docker:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gp
Utilice el siguiente comando para configurar el repositorio estable. Para añadir el nocturno o prueba repositorio, añade la palabra nightly
o test
(o ambos) después de la palabra stable
en los comandos a continuación.
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Instalar el motor Docker
Actualice el índice del paquete apt ya que agregamos un nuevo repositorio:
sudo apt-get update
Ahora instalemos la última versión de Docker Engine y containerd usi
sudo apt-get install docker-ce docker-ce-cli containerd.io
Opcional:Instalación de una versión específica
Si tiene requisitos que requieren una versión específica, puede hacerlo. Para instalar una versión específica:
1. Enumere las versiones disponibles en su repositorio:
$ sudo apt-cache madison docker-ce
docker-ce | 5:20.10.9~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.8~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.7~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.6~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
Ahora puede instalar una versión específica utilizando la cadena de versión de la segunda columna, por ejemplo, 5:20.10.7~3-0~debian-bullseye
.
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
Ejemplo:
sudo apt-get install docker-ce=5:20.10.7~3-0 docker-ce-cli=5:20.10.7~3-0 containerd.io
Una vez finalizada la instalación, el demonio Docker se inicia automáticamente.
4. Instale el motor docker desde un paquete
Si no puede usar el repositorio de Docker para instalar Docker Engine, puede descargar .deb
para su lanzamiento e instálelo manualmente. Debe descargar un archivo nuevo cada vez que desee actualizar Docker.
Vaya a https://download.docker.com/linux/debian/dists/, elija su versión de Debian – (Bullseye), luego busque pool/stable/
, elige amd64
, armhf
, o arm64
y descargue el archivo .deb para la versión de Docker Engine que desea instalar.
Instale Docker Engine, cambiando la ruta a continuación a la ruta donde descargó el paquete de Docker.
sudo dpkg -i /path/to/package.deb
Una vez finalizada la instalación, el demonio Docker se inicia automáticamente.
5. Instalar usando el script de conveniencia
Docker proporciona una secuencia de comandos conveniente en get.docker.com para instalar Docker en entornos de desarrollo de forma rápida y no interactiva.
Este ejemplo descarga el script de get.docker.com y lo ejecuta para instalar la última versión estable de Docker en Linux:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
6. Verificar instalación
Tras la instalación, Docker se ejecutará como un demonio. Para comprobar que la ventana acoplable se está ejecutando, utilizamos la ventana acoplable systemctl status docker
comando:
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-10-19 04:10:32 UTC; 4min 16s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 13456 (dockerd)
Tasks: 7
Memory: 39.0M
CPU: 265ms
CGroup: /system.slice/docker.service
└─13456 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Oct 19 04:10:31 ip-10-2-40-246 dockerd[13456]: time="2021-10-19T04:10:31.789071579Z" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc
Oct 19 04:10:31 ip-10-2-40-246 dockerd[13456]: time="2021-10-19T04:10:31.789278242Z" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/container>
Oct 19 04:10:31 ip-10-2-40-246 dockerd[13456]: time="2021-10-19T04:10:31.789447226Z" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
Oct 19 04:10:32 ip-10-2-40-246 dockerd[13456]: time="2021-10-19T04:10:32.059851510Z" level=info msg="Loading containers: start."
Oct 19 04:10:32 ip-10-2-40-246 dockerd[13456]: time="2021-10-19T04:10:32.267528805Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemo>
Oct 19 04:10:32 ip-10-2-40-246 dockerd[13456]: time="2021-10-19T04:10:32.337295417Z" level=info msg="Loading containers: done."
Oct 19 04:10:32 ip-10-2-40-246 dockerd[13456]: time="2021-10-19T04:10:32.363462993Z" level=info msg="Docker daemon" commit=79ea9d3 graphdriver(s)=overlay2 version=20.10.9
Oct 19 04:10:32 ip-10-2-40-246 dockerd[13456]: time="2021-10-19T04:10:32.363783617Z" level=info msg="Daemon has completed initialization"
El Active: active (running)
muestra que la ventana acoplable se inició correctamente.
Podemos ejecutar un hello-world
imagen para probar que la ventana acoplable funciona como se esperaba:
sudo docker run hello-world
Este comando descarga una imagen de prueba y la ejecuta en un contenedor. Cuando se ejecuta el contenedor, imprime un mensaje informativo y sale.
Obtuve este resultado, mostrando que funciona bien:
$ sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:37a0b92b08d4919615c3ee023f7ddb068d12b8387475d64c622ac30f45c29c51 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly.
7. Ejecutar el comando Docker sin Sudo
De forma predeterminada, el comando docker solo puede ejecutarlo el usuario raíz o un usuario del grupo docker, que se crea automáticamente durante el proceso de instalación de Docker. Si intenta ejecutar el comando docker sin el prefijo sudo o sin estar en el grupo docker, obtendrá un resultado como este:
$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
Si desea evitar escribir sudo cada vez que ejecuta el comando docker, agregue su nombre de usuario al grupo docker:
sudo usermod -aG docker ${USER}
Para aplicar la nueva pertenencia al grupo, cierre sesión en el servidor y vuelva a iniciarla, o escriba lo siguiente:
sudo su - ${USER}
Se le pedirá que ingrese su contraseña de usuario para continuar.
Confirme que su usuario ahora está agregado al grupo docker escribiendo:
id -nG
Veo esto, confirmando que ahora pertenezco al grupo docker
$ id -nG
admin docker
Ahora puedo hacer docker sin sudo:
Probemos ejecutando image.
$ docker run --rm -it --name alpine --entrypoint /bin/sh alpine:3
Unable to find image 'alpine:3' locally
3: Pulling from library/alpine
a0d0a0d46f8b: Pull complete
Digest: sha256:e1c082e3d3c45cccac829840a25941e679c25d438cc8412c2fa221cf1a824e6a
Status: Downloaded newer image for alpine:3
/ #
¡Hemos instalado Docker con éxito en nuestro sistema!
8. Desinstalar Docker cuando ya no se necesita
Para borrar completamente el motor Docker del sistema, debemos desinstalar los paquetes Docker Engine, CLI y Containerd:
sudo apt-get purge docker-ce docker-ce-cli containerd.io -y
Las imágenes, los contenedores, los volúmenes o los archivos de configuración personalizados de su host no se eliminan automáticamente. Para eliminar todas las imágenes, contenedores y volúmenes:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Debe eliminar cualquier archivo de configuración editado manualmente.
Conclusión
En esta guía logramos instalar docker en nuestro sistema Debian 11.