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.io
> 1.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-ce
se 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-ce
que 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-ce
con 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 resolution
dentro 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