Como Instalar Docker en Linux

Advertencia
Este artículo se actualizó por última vez el 2021-01-22, el contenido puede estar desactualizado.

Antes de comenzar, quería contarles que hay una promoción en DigitalOcean donde te dan un crédito de USD 100.00 durante 60 días para que puedas probar los servicios que este Proveedor Cloud ofrece. Lo único que tienes que hacer es suscribirte a DigitalOcean con el siguiente enlace: https://bit.ly/digitalocean-itsm


En este tutorial te voy a enseñar como instalar Docker CE (Community Edition) en distintas distribuciones de Linux.

Docker es un motor de contenedores que nos permite empaquetar una aplicación y todas sus dependencias (bibliotecas) dentro de una unidad estandarizada, garantizando que siempre se va a ejecutar la misma aplicación independientemente de la máquina.

Docker cuenta con dos versiones: Docker CE (Community Edition) mantenida por Docker y la comunidad de software libre, y Docker EE (Enterprise Edition) de pago. Nos vamos a concentrar en instalar la version CE.

La diferencia fundamental entre Docker y un Hypervisor, es que mientras el hypervisor virtualiza el hardware físico para instalar un sistema operativo (con su kernel, controladores, bibliotecas, aplicaciones, etc), Docker añade una capa de abstracción más y “virtualiza” el sistema operativo compartiendo el kernel del host donde esté instalado y empaquetando tanto las bibliotecas como los ejecutables del S.O.

/images/como-instalar-docker-linux/containers-vs-virtual-machines.jpg


Vamos a desinstalar las antiguas versiones de Docker que se encuentren en el sistema:

1
2
sudo apt update
sudo apt remove docker docker-engine docker.io 2>/dev/null

El paquete Docker CE se llama ahora docker-ce. Actualizamos la lista de paquetes:

1
sudo apt update

Instalamos algunas dependencias necesarias para el correcto funcionamiento de Docker:

1
sudo apt -y install apt-transport-https ca-certificates curl software-properties-common

Instalamos la llave GPG oficial de Docker:

1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Añadimos el repositorio oficial:

1
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Instalamos Docker:

1
2
sudo apt update
sudo apt -y install docker-ce docker-ce-cli containerd.io

Por defecto, el comando docker solo se puede ejecutar en modo root, añadiendo nuestro usuario actual al grupo “docker” vamos a poder ejecutar contenedores, descargar imágenes, ver los contenedores corriendo, etc:

1
sudo usermod -aG docker $USER

Ahora iniciamos el servicio docker y además lo habilitamos para que inicie al arrancar el sistema:

1
sudo systemctl enable --now docker

Actualizamos la lista de paquetes:

1
sudo apt update

Instalamos algunas dependencias necesarias para el correcto funcionamiento de Docker:

1
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

Instalamos la llave GPG oficial de Docker:

1
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Añadimos el repositorio oficial:

1
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

Instalamos Docker:

1
2
sudo apt-get update
sudo apt-get -y install docker-ce docker-ce-cli containerd.io

Por defecto, el comando docker solo se puede ejecutar en modo root, añadiendo nuestro usuario al grupo “docker” vamos a poder ejecutar contenedores, descargar imágenes, ver los contenedores corriendo, etc:

1
sudo usermod -aG docker $USER

Ahora iniciamos el servicio docker y además lo habilitamos para que inicie al arrancar el sistema:

1
sudo systemctl enable --now docker

Desinstalamos las versiones anteriores de Docker:

1
sudo dnf remove docker docker-common docker-selinux docker-engine-selinux docker-engine 2>/dev/null

Vamos a añadir y configurar el repositorio oficial de Docker:

1
2
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

Instalamos Docker CE:

1
sudo dnf install docker-ce docker-ce-cli containerd.io --nobest --allowerasing

Por defecto, el comando docker solo se puede ejecutar en modo root, añadiendo nuestro usuario al grupo “docker” vamos a poder ejecutar contenedores, descargar imágenes, ver los contenedores corriendo, etc:

1
sudo usermod -aG docker $USER

Ahora iniciamos el servicio docker y además lo habilitamos para que inicie al arrancar el sistema:

1
sudo systemctl enable --now docker

Consejo
En CentOS 8 sustituímos el comando “yum” por “dnf”

Desinstalamos versiones anteriores:

1
sudo yum remove docker docker-common docker-selinux docker-engine

Instalamos Prerequisitos:

1
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Configuramos el repositorio oficial:

1
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Instalamos Docker CE:

1
sudo yum -y install docker-ce docker-ce-cli containerd.io

En caso de encontrar errores con las dependencias, ejecutamos:

1
sudo yum install -y --setopt=obsoletes=0 docker-ce docker-ce-selinux

Por defecto, el comando docker solo se puede ejecutar en modo root, añadiendo nuestro usuario al grupo “docker” vamos a poder ejecutar contenedores, descargar imágenes, ver los contenedores corriendo, etc:

1
sudo usermod -aG docker $USER

Ahora iniciamos el servicio docker y además lo habilitamos para que inicie al arrancar el sistema:

1
sudo systemctl enable --now docker

Afortunadamente, Docker se encuentra disponible en los repositorios oficiales de OpenSUSE. A pesar que no es la última versión, es bastante estable por lo que nos garantiza su funcionamiento.

Actualizamos el sistema:

1
sudo zypper update

Instalamos Docker:

1
sudo zypper install docker

Por defecto, el comando docker solo se puede ejecutar en modo root, añadiendo nuestro usuario al grupo “docker” vamos a poder ejecutar contenedores, descargar imágenes, ver los contenedores corriendo, etc:

1
sudo usermod -aG docker $USER

Iniciamos el servicio:

1
sudo systemctl enable --now docker

Para probar Docker, vamos a ejecutar la imagen hello-world en nuestro sistema, con el siguiente comando:

1
docker run --rm hello-world

El cual debería mostrar la siguiente salida, indicádonos que puedo descargar y ejecutar el contenedor:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:31b9c7d48790f0d8c50ab433d9c3b7e17666d6993084c002c2ff1ca09b96391d
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/

Para verificar la versión actual de Docker, ejecutamos el siguiente comando:

1
docker version

Espero les haya gustado este tutorial, ¡hasta la próxima!

Si te pareció útil este artículo y el proyecto en general, considera brindarme un café :)

Buy me a coffeeBuy me a coffee