Cómo instalar Docker CE en RHEL 8 / CentOS 8

Published:

Dejo esta publicación a pedido de un lector, que les puede venir bien para instalar rápidamente Docker en su versión community por medio de repositorios con tan solo utilizar algunos comandos que también explicaré.

1- Pre-requisitos

sudo dnf update

2- Repositorios

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

Podemos verificar que el repositorio se ha habilitado mirando el resultado del siguiente comando:

sudo dnf repolist -v

También podemos listar todos los paquetes de docker disponibles.

sudo dnf list docker-ce --showduplicates | sort -r

3- Problemas con la instalación

Parece ser que Red Hat ha bloqueado de alguna manera la instalación de containerd.io1.2.0-3.el7, que es una dependencia de docker-ce. Será que quiere promocionar a la fuerza su propio producto Podman?

El problema para nosotros, es que no basta con el comando sudo dnf install docker-ce dado que no funcionará como siempre.

Como veremos en un minuto, todavía es posible solucionar este problema; Sin embargo, una vez que docker-cese instala, se hace evidente otro problema: siempre que el administrador de firewall del sistema esté habilitado firewalld, nos dará problemas con los DNS internos de docker.

Esto es, por supuesto, un problema crítico. Sin embargo, si aún querés continuar con la instalación, estos son los posibles métodos que se pueden usar para evitar los problemas de dependencias:

3.1- Instalar una versión específica de docker-ce

Al momento de redactar este artículo las versiones de docker-ceque están instaladas sin problemas son:

  • docker-ce-3:18.09.1-3.el7
  • docker-ce-18.06.3.ce-3.el7;
  • docker-ce-17.12.1.ce-1.el7.centos

Para instalar una versión específica, todo lo que tenemos que hacer es proporcionar el nombre completo del paquete, por ejemplo:

sudo dnf install docker-ce-3:18.09.1-3.el7

3.2- Forzar la instalación de docker-ce con la opción –nobest

Normalmente, al instalar un paquete, se selecciona el mejor candidato disponible de un repositorio. En este caso, por ejemplo, se intenta (y falla) la instalación de la última versión de docker-ce. Al usar la opción --nobest, podemos cambiar este comportamiento para que la primera versión de docker-cecon dependencias satisfactorias se seleccione automáticamente, en este caso 3:18.09.1-3.el7.

$ sudo dnf install --nobest docker-ce

3.3- Instalación manual del último paquete containerd.io disponible

Si necesitamos estrictamente instalar la última versión de docker-ce, podemos instalar la versión requerida de containerd.io manualmente, ejecutando:

$ sudo dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Después de instalar el paquete, simplemente podemos instalar docker-ce:

$ sudo dnf install docker-ce

Esta opción es menos conveniente ya que el  paquetecontainerd.io no se instala como una dependencia de docker-ce, por lo que no se eliminará automáticamente cuando se desinstale este último del sistema.

Independientemente del método que usemos para instalar docker-ce, como se dijo antes, para que funcione DNS resolutiondentro de los contenedores de Docker, debemos deshabilitar firewalld (también puede ser necesario reiniciar el sistema):

$ sudo systemctl deshabilitar firewalld

4- Servicio

Finalmente habilitamos con systemctl.

sudo systemctl enable --now docker
- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles