GNU/Linux >> Tutoriales Linux >  >> Cent OS

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

La última versión de RHEL 8/CentOS 8. Red Hat ha creado sus propias herramientas, buildah y podman , que pretenden ser compatibles con las imágenes docker existentes y funcionan sin depender de un demonio, lo que permite la creación de contenedores como usuarios normales, sin necesidad de permisos especiales (con algunas limitaciones:por ejemplo, en el momento de escribir, todavía no es posible asignar puertos de host al contenedor sin privilegios).

Sin embargo, todavía faltan algunas herramientas específicas:un equivalente de docker-compose , por ejemplo, aún no existe. En este tutorial, veremos cómo instalar y ejecutar Docker CE original en Rhel8 utilizando el repositorio oficial de Docker para CentOS7.

En este tutorial aprenderás:

  • Cómo habilitar el repositorio docker-ce en RHEL 8 / CentOS 8
  • Cómo instalar docker y docker-compose en RHEL 8 / CentOS 8


Docker instalado en RHEL 8 / CentOS 8

Requisitos de software y convenciones utilizadas

¿Qué es Docker?

Docker es un proyecto de código abierto que permite la creación y distribución de aplicaciones dentro de containers , que son entornos estandarizados que se pueden replicar fácilmente, independientemente del sistema host. Mientras que en Red Hat Enterprise Linux 7 Docker era oficialmente compatible, en la nueva versión de este sistema operativo de código abierto, ha sido reemplazado por una serie de otras herramientas desarrolladas por el propio Red Hat:buildah y podman .

Sin embargo, mediante el uso de un repositorio externo, aún es posible instalar Docker CE (Community Edition). En este tutorial veremos cómo instalar este repositorio; sin embargo, tenga en cuenta que originalmente estaba destinado a CentOS 7 (un clon de RHEL), y la versión comunitaria de Docker no tiene soporte oficial para Red Hat Enterprise Linux. Debido a esto, existen problemas; los analizamos a continuación.

Agregar el repositorio externo

Dado que Docker no está disponible en RHEL 8/CentOS 8, debemos agregar un repositorio externo para obtener el software. En este caso, utilizaremos el repositorio oficial de Docker CE CentOS:esta es, en el momento de escribir este artículo, la única forma de instalar Docker CE en RHEL 8/CentOS 8.

El dnf config-manager La utilidad nos permite, entre otras cosas, habilitar o deshabilitar fácilmente un repositorio en nuestra distribución. Por defecto, solo el appstream y baseos los repositorios están habilitados en Rhel8; necesitamos agregar y habilitar también el docker-ce repositorio Todo lo que tenemos que hacer para realizar esta tarea es ejecutar el siguiente comando:

$ 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

El comando anterior devolverá información detallada sobre todos los repositorios habilitados. Esto es lo que deberías ver en este punto:

Repo-id      : docker-ce-stable
Repo-name    : Docker CE Stable - x86_64
Repo-revision: 1549905809
Repo-updated : Mon 11 Feb 2019 06:23:29 PM CET
Repo-pkgs    : 30
Repo-size    : 618 M
Repo-baseurl : https://download.docker.com/linux/centos/7/x86_64/stable
Repo-expire  : 172,800 second(s) (last: Mon 18 Feb 2019 10:23:54 AM CET)
Repo-filename: /etc/yum.repos.d/docker-ce.repo

Repo-id      : rhel-8-for-x86_64-appstream-rpms
Repo-name    : Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs)
Repo-revision: 1542158694
Repo-updated : Wed 14 Nov 2018 02:24:54 AM CET
Repo-pkgs    : 4,594
Repo-size    : 4.9 G
Repo-baseurl : https://cdn.redhat.com/content/beta/rhel8/8/x86_64/appstream/os
Repo-expire  : 86,400 second(s) (last: Mon 18 Feb 2019 10:23:55 AM CET)
Repo-filename: /etc/yum.repos.d/redhat.repo

Repo-id      : rhel-8-for-x86_64-baseos-rpms
Repo-name    : Red Hat Enterprise Linux 8 for x86_64 - BaseOS Beta (RPMs)
Repo-revision: 1542158719
Repo-updated : Wed 14 Nov 2018 02:25:19 AM CET
Repo-pkgs    : 1,686
Repo-size    : 925 M
Repo-baseurl : https://cdn.redhat.com/content/beta/rhel8/8/x86_64/baseos/os
Repo-expire  : 86,400 second(s) (last: Mon 18 Feb 2019 10:23:56 AM CET)
Repo-filename: /etc/yum.repos.d/redhat.repo
Total packages: 6,310

Instalando docker-ce

El docker-ce-stable El repositorio ahora está habilitado en nuestro sistema. El repositorio contiene varias versiones de docker-ce paquete, para mostrarlos todos, podemos ejecutar:

$ dnf list docker-ce --showduplicates | sort -r
docker-ce.x86_64            3:19.03.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.0-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64            18.06.3.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.2.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable

¿Qué versión instalar? Bueno, Red Hat parece haber bloqueado de alguna manera la instalación de containerd.io> 1.2.0-3.el7 , que es una dependencia de docker-ce . Debido a esto, simplemente ejecute sudo dnf install docker-ce comando, no funcionará. Como veremos en un minuto, todavía es posible solucionar este problema; una vez docker-ce está instalado, sin embargo, otro problema se vuelve evidente:mientras firewalld , el administrador de firewall del sistema está habilitado, DNS resolution dentro de los contenedores docker no funciona.

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

  • Instalar una versión específica de docker-ce que requiere una versión instalable de containerd.io paquete;
  • Fuerza la instalación proporcionando --nobest opción
  • Instalar el último containerd.io disponible rpm manualmente;

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

Al momento de escribir las versiones de docker-ce que se instalan 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

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, la instalación de la última versión de docker-ce se intenta (y falla). Usando el --nobest opción, podemos cambiar este comportamiento para que la primera versión de docker-ce con dependencias satisfactorias se selecciona como "alternativo", en este caso 3:18.09.1-3.el7 .

$ sudo dnf install --nobest docker-ce
Dependencies resolved.

Problem: package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.el7.x86_64 is excluded
  - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
=======================================================================================================================================================
 Package                            Arch         Version                                                  Repository                              Size
=======================================================================================================================================================
Installing:
 docker-ce                          x86_64       3:18.09.1-3.el7                                          docker-ce-stable                        19 M
Installing dependencies:
 containerd.io                      x86_64       1.2.0-3.el7                                              docker-ce-stable                        22 M
 docker-ce-cli                      x86_64       1:19.03.2-3.el7                                          docker-ce-stable                        39 M
 container-selinux                  noarch       2:2.94-1.git1e99f1d.module+el8.0.0+4017+bbba319f         rhel-8-for-x86_64-appstream-rpms        43 k
 tar                                x86_64       2:1.30-4.el8                                             rhel-8-for-x86_64-baseos-rpms          838 k
 libcgroup                          x86_64       0.41-19.el8                                              rhel-8-for-x86_64-baseos-rpms           70 k
 python3-policycoreutils            noarch       2.8-16.1.el8                                             rhel-8-for-x86_64-baseos-rpms          2.2 M
 python3-libsemanage                x86_64       2.8-5.el8                                                rhel-8-for-x86_64-baseos-rpms          127 k
 python3-setools                    x86_64       4.2.0-2.el8                                              rhel-8-for-x86_64-baseos-rpms          598 k
 checkpolicy                        x86_64       2.8-2.el8                                                rhel-8-for-x86_64-baseos-rpms          338 k
 python3-audit                      x86_64       3.0-0.10.20180831git0047a6c.el8                          rhel-8-for-x86_64-baseos-rpms           85 k
 policycoreutils-python-utils       noarch       2.8-16.1.el8                                             rhel-8-for-x86_64-baseos-rpms          228 k
Skipping packages with broken dependencies:
 docker-ce                          x86_64       3:19.03.2-3.el7                                          docker-ce-stable                        24 M

Transaction Summary
=======================================================================================================================================================
Install  12 Packages
Skip      1 Package

Total download size: 85 M
Installed size: 351 M
Is this ok [y/N]:

Instala manualmente el ú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 el último docker-ce :

$ sudo dnf install docker-ce
Dependencies resolved.
=======================================================================================================================================================
  Package                          Arch                      Version                             Repository                                        Size
=======================================================================================================================================================
Installing:
  docker-ce                        x86_64                    3:19.03.2-3.el7                     docker-ce-stable                                  24 M
Installing dependencies:
  docker-ce-cli                    x86_64                    1:19.03.2-3.el7                     docker-ce-stable                                  39 M
  tar                              x86_64                    2:1.30-4.el8                        rhel-8-for-x86_64-baseos-rpms                    838 k
  libcgroup                        x86_64                    0.41-19.el8                         rhel-8-for-x86_64-baseos-rpms                     70 k

Transaction Summary
=======================================================================================================================================================
Install  4 Packages

Total download size: 65 M
Installed size: 275 M
Is this ok [y/N]:

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

Cualquier método que usemos para instalar docker-ce , como se dijo antes, para hacer DNS resolution funciona dentro de los contenedores Docker, debemos deshabilitar firewalld (también puede ser necesario reiniciar el sistema):

$ sudo systemctl disable firewalld

Iniciar y habilitar el demonio docker

Una vez docker-ce está instalado, debemos iniciar y habilitar el demonio docker, para que también se inicie automáticamente en el arranque. El comando que debemos ejecutar es el siguiente:

$ sudo systemctl enable --now docker

En este punto, podemos confirmar que el daemon está activo ejecutando:

$ systemctl is-active docker
active

Del mismo modo, podemos verificar que esté habilitado en el arranque, ejecutando:

$ systemctl is-enabled docker
enabled

Instalando docker-compose

Docker compose es un paquete muy útil que nos permite administrar aplicaciones multicontenedor, como por ejemplo las basadas en la pila LAMP, donde cada parte del entorno (PHP, Apache, MariaDB) es proporcionada por un contenedor dedicado (si está interesado en el tema, eche un vistazo a nuestro tutorial sobre cómo crear una pila de lámparas basada en Docker). El paquete no está disponible en Rhel8, ni existe un equivalente para usar con las herramientas de Rhel. Sin embargo, es posible instalarlo de muchas maneras:sigue leyendo y decide cuál te conviene más.

Instalación global

La forma en que debemos instalar docker-compose varía en función de si queremos instalarlo globalmente o solo para un único usuario. Al momento de escribir, la única forma de instalarlo globalmente es descargar el binario desde la página de github del proyecto:

$ curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose

Una vez descargado el binario, lo movemos a /usr/local/bin y lo hacemos ejecutable:

$ sudo mv docker-compose /usr/local/bin && sudo chmod +x /usr/local/bin/docker-compose

El /usr/local La jerarquía no se elige al azar. Esta estructura de directorios está diseñada para ser utilizada para archivos instalados por el administrador local manualmente (para software compilado desde el origen, por ejemplo), para garantizar la separación del software instalado con el administrador de paquetes del sistema.

Aunque es posible que un usuario normal ejecute comandos relacionados con la ventana acoplable si forma parte de la docker group (el grupo se crea automáticamente cuando instalamos docker-ce), por defecto deben ejecutarse con privilegios de root por motivos de seguridad. Cuando necesitamos hacer esto último, ya que el /usr/local/bin el directorio no está en el PATH del usuario raíz , debemos llamar al binario especificando su ubicación o agregar /usr/local/bin a la PATH sí mismo. La primera opción es la que recomiendo en este caso.

Instalación por usuario

Si nuestro usuario es parte del docker grupo, y por lo tanto se le permite ejecutar comandos docker, y desde docker-compose está disponible como un paquete de python, también podemos instalarlo usando pip , el administrador de paquetes de python. Primero, asegúrese de que pip esté instalado:

$ sudo dnf install python3-pip

Para obtener docker-compose ejecutamos:

$ pip3.6 install docker-compose --user

Tenga en cuenta que incluso si fuera posible ejecutar pip como root para instalar un paquete globalmente, esto no se recomienda y se desaconseja encarecidamente.

Probando ventana acoplable

Instalamos docker y docker-compose, ahora para verificar que todo funcione como se esperaba, podemos intentar construir una imagen y ejecutar un contenedor:en este caso usaremos el httpd oficial uno. Todo lo que tenemos que hacer es ejecutar el siguiente comando:

sudo docker run --rm --name=linuxconfig-test -p 80:80 httpd

Desde el httpd la imagen no existe localmente, se buscará y construirá automáticamente. Finalmente, se lanzará un contenedor basado en él en primer plano (se eliminará automáticamente cuando se detenga). Deberíamos poder ver el It works! mensaje cuando lleguemos a la ip de nuestra máquina a través del navegador.

Conclusiones

Red Hat Enterprise Linux 8 no soporta Docker:en esta distribución ha sido reemplazado por herramientas propias de Red Hat como buildah y podman , que son compatibles con Docker pero no necesitan una arquitectura de servidor/cliente para ejecutarse. El uso de herramientas nativas, siempre que sea posible, es siempre la forma recomendada de hacerlo, pero por una razón u otra, es posible que aún desee instalar el Docker original. En este tutorial, vimos cómo es posible instalar Docker CE en Rhel8, usando el repositorio oficial de Docker para CentOS7, que es un clon 100 % compatible.

Esta no es una solución ideal y, como vimos, en este momento, se necesitan algunas soluciones para que Docker funcione en RHEL8. Si surgen nuevos problemas o se encuentran mejores soluciones a los problemas mencionados anteriormente, este artículo se actualizará en consecuencia. Estén atentos.


Cent OS
  1. Cómo instalar Docker en CentOS 7

  2. Cómo instalar Docker Compose en CentOS 7

  3. Cómo instalar Docker en CentOS 7 / RHEL 7

  4. Cómo instalar Docker en CentOS

  5. Cómo instalar docker en CentOS/RHEL/Fedora

Cómo instalar la brújula en RHEL 8 / CentOS 8

Cómo instalar Puppet en RHEL 8 / CentOS 8

Cómo instalar YUM en RHEL 8 / CentOS 8

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

Cómo instalar Docker en CentOS

Cómo instalar Docker en CentOS 7

    Requisitos de software y convenciones de la línea de comandos de Linux
    Categoría Requisitos, convenciones o versión de software utilizada
    Sistema RHEL 8 / CentOS 8
    Software Docker versión 18.09.2
    Otro Permiso para ejecutar el comando con privilegios de root.
    Convenciones # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando
    $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios