GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer Docker CE sur RHEL 8 / CentOS 8

La dernière version de RHEL 8 / CentOS 8. Red Hat a construit ses propres outils, buildah et podman , qui visent à être compatibles avec les images Docker existantes et fonctionnent sans dépendre d'un démon, permettant la création de conteneurs en tant qu'utilisateurs normaux, sans avoir besoin d'autorisations spéciales (avec certaines limitations :par exemple, au moment de la rédaction, il n'est toujours pas possible de mapper les ports hôtes au conteneur sans privilèges).

Certains outils spécifiques manquent cependant encore :un équivalent de docker-compose , par exemple n'existe pas encore. Dans ce didacticiel, nous verrons comment installer et exécuter le Docker CE d'origine sur Rhel8 en utilisant le référentiel Docker officiel pour CentOS7.

Dans ce didacticiel, vous apprendrez :

  • Comment activer le dépôt docker-ce sur RHEL 8/CentOS 8
  • Comment installer docker et docker-compose sur RHEL 8/CentOS 8


Docker installé sur RHEL 8 / CentOS 8

Configuration logicielle requise et conventions utilisées

Configuration logicielle requise et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version du logiciel utilisée
Système RHEL 8/CentOS 8
Logiciel Docker version 18.09.2
Autre Autorisation d'exécuter la commande avec les privilèges root.
Conventions # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo commande
$ – nécessite que les commandes linux données soient exécutées en tant qu'utilisateur normal non privilégié

Qu'est-ce que Docker ?

Docker est un projet open source qui permet la création et la distribution d'applications à l'intérieur de containers , qui sont des environnements standardisés qui peuvent être facilement répliqués, indépendamment du système hôte. Alors que dans Red Hat Enterprise Linux 7, Docker était officiellement pris en charge, sur la nouvelle version de ce système d'exploitation open source, il a été remplacé par une série d'autres outils développés par Red Hat lui-même :buildah et podman .

En utilisant un référentiel externe, cependant, il est toujours possible d'installer Docker CE (Community Edition). Dans ce tutoriel, nous verrons comment installer ce dépôt; notez cependant qu'il était à l'origine destiné à CentOS 7 (un clone RHEL), et la version communautaire de Docker n'a pas de support officiel pour Red Hat Enterprise Linux. Pour cette raison, des problèmes existent - nous en discutons ci-dessous.

Ajout du référentiel externe

Étant donné que Docker n'est pas disponible sur RHEL 8 / CentOS 8, nous devons ajouter un référentiel externe pour obtenir le logiciel. Dans ce cas, nous utiliserons le référentiel officiel Docker CE CentOS :c'est, au moment de la rédaction, le seul moyen d'installer Docker CE sur RHEL 8 / CentOS 8.

Le dnf config-manager utilitaire nous permet, entre autres, d'activer ou de désactiver facilement un référentiel dans notre distribution. Par défaut, seul le appstream et baseos les référentiels sont activés sur Rhel8 ; nous devons ajouter et activer également le docker-ce dépôt. Tout ce que nous devons faire pour accomplir cette tâche est d'exécuter la commande suivante :

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

Nous pouvons vérifier que le référentiel a été activé en examinant le résultat de la commande suivante :

$ sudo dnf repolist -v

La commande ci-dessus renverra des informations détaillées sur tous les référentiels activés. Voici ce que vous devriez voir à ce stade :

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

Installer docker-ce

Le docker-ce-stable référentiel est maintenant activé sur notre système. Le dépôt contient plusieurs versions du docker-ce package, pour les afficher tous, nous pouvons lancer :

$ 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

Quelle version installer ? Eh bien, Red Hat semble avoir en quelque sorte bloqué l'installation de containerd.io> 1.2.0-3.el7 , qui est une dépendance de docker-ce . Pour cette raison, il suffit d'exécuter le sudo dnf install docker-ce commande, ne fonctionnera pas. Comme nous le verrons dans un instant, il est toujours possible de contourner ce problème; une fois docker-ce est installé, cependant, un autre problème devient évident :tant que firewalld , le gestionnaire de pare-feu du système est activé, DNS resolution à l'intérieur des conteneurs Docker ne fonctionne pas.

Il s'agit bien sûr d'un problème critique. Cependant, si vous souhaitez toujours procéder à l'installation, voici les méthodes possibles qui peuvent être utilisées pour éviter les problèmes de dépendances :

  • Installer une version spécifique de docker-ce qui nécessite une version installable du containerd.io paquet ;
  • Forcer l'installation en fournissant le --nobest options
  • Installez la dernière version disponible de containerd.io tr/min manuellement ;

Installer une version spécifique de docker-ce

Au moment d'écrire les versions de docker-ce qui s'installent sans problème sont :

  • 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

Pour installer une version spécifique, il suffit de fournir le nom complet du package, par exemple :

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

Forcer l'installation de docker-ce avec l'option –nobest

Normalement, lors de l'installation d'un package, le meilleur candidat disponible est sélectionné dans un référentiel. Dans ce cas, par exemple, l'installation de la dernière version de docker-ce est tenté (et échoue). En utilisant le --nobest option, nous pouvons changer ce comportement afin que la première version de docker-ce avec des dépendances satisfaisables est sélectionné comme "repli", dans ce cas 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]:

Installez manuellement le dernier package containerd.io disponible

Si nous avons strictement besoin d'installer la dernière version de docker-ce , nous pouvons installer la version requise de containerd.io manuellement, en exécutant :

$ 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

Une fois le package installé, nous pouvons simplement installer le dernier 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]:

Cette option est moins pratique depuis le containerd.io le package n'est pas installé en tant que dépendance de docker-ce , il ne sera donc pas supprimé automatiquement lors de la désinstallation de ce dernier du système.

Quelle que soit la méthode que nous utilisons pour installer docker-ce , comme dit précédemment, afin de faire de la DNS resolution travailler à l'intérieur des conteneurs Docker, nous devons désactiver le pare-feu (un redémarrage du système peut également être nécessaire) :

$ sudo systemctl disable firewalld

Démarrer et activer le démon docker

Une fois docker-ce est installé, nous devons démarrer et activer le démon docker, afin qu'il soit également lancé automatiquement au démarrage. La commande que nous devons exécuter est la suivante :

$ sudo systemctl enable --now docker

À ce stade, nous pouvons confirmer que le démon est actif en exécutant :

$ systemctl is-active docker
active

De même, nous pouvons vérifier qu'il est activé au démarrage, en lançant :

$ systemctl is-enabled docker
enabled

Installation de docker-compose

Docker compose est un package très utile qui permet de gérer des applications multi-conteneurs, comme par exemple celles basées sur la pile LAMP, où chaque partie de l'environnement (PHP, Apache, MariaDB) est fournie par un conteneur dédié (si cela vous intéresse dans le sujet, jetez un œil à notre tutoriel sur la création d'une pile de lampes basée sur Docker). Le package n'est pas disponible sur Rhel8, ni d'équivalent à utiliser avec les outils Rhel. Il est cependant possible de l'installer de plusieurs façons :continuez simplement à lire et décidez ce qui vous convient le mieux.

Installation globale

La façon dont nous devrions installer docker-compose varie selon que nous voulons l'installer globalement ou juste pour un seul utilisateur. Au moment de l'écriture, la seule façon de l'installer globalement est de télécharger le binaire depuis la page github du projet :

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

Une fois le binaire téléchargé, nous le déplaçons dans /usr/local/bin et nous le rendons exécutable :

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

Le /usr/local La hiérarchie n'est pas choisie au hasard. Cette structure de répertoires est conçue pour être utilisée pour les fichiers installés manuellement par l'administrateur local (pour les logiciels compilés à partir des sources, par exemple), afin d'assurer une séparation avec les logiciels installés avec le gestionnaire de paquets du système.

Bien qu'il soit possible pour un utilisateur normal d'exécuter des commandes liées à docker s'il fait partie du docker groupe (le groupe est automatiquement créé lorsque nous installons docker-ce), par défaut, ils doivent être exécutés avec les privilèges root pour des raisons de sécurité. Lorsque nous devons faire ce dernier, puisque le /usr/local/bin le répertoire n'est pas dans le PATH de l'utilisateur root , nous devons soit appeler le binaire en spécifiant son emplacement, soit ajouter /usr/local/bin au PATH lui-même. La première option est celle que je recommande dans ce cas.

Installation par utilisateur

Si notre utilisateur fait partie du docker groupe, et donc il est autorisé à exécuter des commandes docker, et depuis docker-compose est disponible sous forme de package python, nous pouvons également l'installer en utilisant pip , le gestionnaire de packages Python. Tout d'abord, assurez-vous que pip lui-même est installé :

$ sudo dnf install python3-pip

Pour obtenir docker-compose nous lançons :

$ pip3.6 install docker-compose --user

Veuillez noter que même s'il est possible d'exécuter pip en tant que root pour installer un package globalement, cela n'est pas recommandé et fortement déconseillé.

Docker de test

Nous avons installé docker et docker-compose, maintenant pour vérifier que tout fonctionne comme prévu, nous pouvons essayer de construire une image et d'exécuter un conteneur :dans ce cas, nous utiliserons le httpd officiel une. Il suffit de lancer la commande suivante :

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

Depuis le httpd l'image n'existe pas localement, elle sera automatiquement récupérée et construite. Enfin, un conteneur basé sur celui-ci sera lancé au premier plan (il sera automatiquement supprimé à l'arrêt). Nous devrions pouvoir voir le It works! message lorsque nous atteignons l'adresse IP de notre machine via le navigateur.

Conclusion

Red Hat Enterprise Linux 8 ne prend pas en charge Docker :sur cette distribution, il a été remplacé par des outils propres à Red Hat tels que buildah et podman , qui sont compatibles avec Docker mais n'ont pas besoin d'une architecture serveur/client pour fonctionner. L'utilisation d'outils natifs, dans la mesure du possible, est toujours la méthode recommandée, mais pour une raison ou une autre, vous souhaiterez peut-être toujours installer le Docker d'origine. Dans ce tutoriel, nous avons vu comment il est possible d'installer Docker CE sur Rhel8, en utilisant le référentiel Docker officiel pour CentOS7, qui est un clone 100 % compatible.

Ce n'est pas une solution idéale, et comme nous l'avons vu, certaines solutions de contournement sont nécessaires pour que Docker fonctionne sur RHEL8. Si de nouveaux problèmes surviennent ou si de meilleures solutions aux problèmes mentionnés ci-dessus sont trouvées, cet article sera mis à jour en conséquence. Restez à l'écoute.


Cent OS
  1. Comment installer Docker sur CentOS 7

  2. Comment installer Docker Compose sur CentOS 7

  3. Comment installer Docker sur CentOS 7 / RHEL 7

  4. Comment installer Docker dans CentOS

  5. Comment installer docker sur CentOS / RHEL / Fedora

Comment installer la boussole sur RHEL 8 / CentOS 8

Comment installer Puppet sur RHEL 8 / CentOS 8

Comment installer YUM sur RHEL 8 / CentOS 8

Comment installer Docker CE sur CentOS 8 / RHEL 8

Comment installer Docker sur CentOS

Comment installer Docker sur CentOS 7