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
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 ducontainerd.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.