Table of Contents
Mise en oeuvre de Docker sur CentOS
Table of Contents
Docker est un logiciel libre permettant facilement de lancer des applications dans des conteneurs logiciels
L'objectif d'un conteneur est le même que pour un serveur dédié virtuel : héberger des services sur un même serveur physique tout en les isolant les uns des autres. Un conteneur est cependant moins figé qu'une machine virtuelle en matière de taille de disque et de ressources allouées.
Un conteneur permet d'isoler chaque service : le serveur web, la base de données, une application peuvent être exécutés de façon indépendante dans leur conteneur dédié, contenant uniquement les dépendances nécessaires. Chaque conteneur est relié par des réseaux virtuels. Il est possible de monter des volumes de disque de la machine hôte dans un conteneur.
Conditions préalables
Cette section répertorie les éléments à prendre en compte avant d’installer Docker EE. Les éléments nécessitant une action sont expliqués ci-dessous.
- Utiliser CentOS 64 bits 7.1 et versions ultérieures sur x86_64.
- Utiliser le pilote de stockage overlay2 ou devicemapper (mode direct-lvm en production).
- Rechercher l'URL du référentiel Docker sur Docker Hub.
- Désinstaller les anciennes versions de Docker.
- Supprimer les anciens dépôts Docker de /etc/yum.repos.d/.
Architecture
Installer les paquets nécessaires (yum-utils fournit l'utilitaire yum-config-manager, et device-mapper-persistent-data et lvm2 sont requis par le pilote de stockage devicemapper).
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Le référentiel centos-extras doit être activé. Ce référentiel est activé par défaut, mais s'il est désactivé, il faut le réactiver.
Docker EE prend en charge la dernière version de Centos 64 bits, fonctionnant sous x86_64.
Pilotes de stockage
Docker prend en charge plusieurs pilotes de stockage différents, utilisant une architecture enfichable, qui contrôle le mode de stockage et de gestion des images et des conteneurs sur l'hôte Docker.
Si plusieurs pilotes de stockage sont pris en charge dans le noyau, Docker dispose d'une liste hiérarchisée des pilotes de stockage à utiliser si aucun pilote de stockage n'est explicitement configuré.
Docker prend en charge les pilotes de stockage suivants:
- Overlay2 est le pilote de stockage préféré pour toutes les distributions Linux actuellement prises en charge et ne nécessite aucune configuration supplémentaire.
- Aufs est le pilote de stockage préféré de Docker 18.06 et versions antérieures, lorsqu'il est exécuté sur Ubuntu 14.04 sur le noyau 3.13, qui ne prend pas en charge overlay2.
- Devicemapper est pris en charge, mais requiert direct-lvm pour les environnements de production, car loopback-lvm, bien que la configuration zéro ait été configuré, a des performances très médiocres. Devicemapper était le pilote de stockage recommandé pour CentOS et RHEL, car la version de leur noyau ne supportait pas overlay2. Les versions actuelles de CentOS et RHEL prennent désormais en charge overlay2, qui est désormais le pilote recommandé.
- Les pilotes de stockage btrfs et zfs sont utilisés s’il s’agit du système de fichiers de sauvegarde (le système de fichiers de l’hôte sur lequel Docker est installé). Ces systèmes de fichiers permettent des options avancées, telles que la création d’instantanés, mais nécessitent davantage de maintenance et d’installation. Celles-ci dépendent du système de fichiers de sauvegarde correctement configuré.
- Le pilote de stockage vfs est conçu à des fins de test et pour les situations dans lesquelles aucun système de fichiers avec copie sur écriture ne peut être utilisé. Les performances de ce pilote de stockage sont médiocres et ne sont pas recommandées pour une utilisation en production.
Le pilote de stockage btrfs est uniquement pris en charge sur Docker CE sous Ubuntu ou Debian et sur Docker EE/CS Engine sur SLES.
Les pilotes overlay2 et overlay sont tous deux plus performants que aufs et devicemapper. Dans certaines circonstances, overlay2 peut également être plus performant que btrfs.
Pour Docker CE le pilote de stockage overlay2 est recommandé.
Docker EE prend en charge les pilotes de stockage, overlay2 et devicemapper. Dans Docker EE 17.06.2-ee-5 et les versions ultérieures, overlay2 est le pilote de stockage recommandé. Les limitations suivantes s'appliquent:
- OverlayFS: Si selinux est activé, le pilote de stockage overlay2 est pris en charge sur CentOS 7.4 ou version ultérieure. Si selinux est désactivé, overlay2 est pris en charge sur CentOS 7.2 ou version ultérieure, avec la version de noyau 3.10.0-693 et ultérieure.
- Device Mapper: sur les systèmes de production utilisant devicemapper, il faut utiliser le mode direct-lvm, qui requiert un ou plusieurs périphériques de bloc dédiés. Un stockage rapide, tel qu'un support à l'état solide (SSD), est recommandé.
Pour forcer l'utilisation du driver overlay sur Centos:
systemctl stop docker #Créer le fichier /etc/docker/daemon.json avec le contenu suivant: { "storage-driver": "overlay2", "storage-opts": ["overlay2.override_kernel_check=true"] } systemctl start docker
Trouver l'URL de dépôt Docker
Pour installer Docker EE, il faut l'URL du référentiel Docker EE associé à l'évaluation ou abonnement:
- Sur https://hub.docker.com/my-content, tous less abonnements et essais sont répertoriés.
- Cliquer sur le bouton
Configurer pour Docker Enterprise Edition for Centos
. - Copier l'URL et coller cette URL pour télécharger l'édition pour une utilisation ultérieure.
Pour Docker-CE les URLs des dépôts sont :
Désinstaller les anciennes versions de Docker
Les anciennes versions et les dépendances associées doivent être désinstallées . Le contenu de /var/lib/docker/
est conservé, y compris les images, les conteneurs, les volumes et les réseaux. Si on effectue une mise à niveau de Docker CE vers Docker EE, supprimer également le package Docker CE.
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
Installation de Docker CE
Pour commencer à utiliser Docker CE sur CentOS, il faut respecter les conditions préalables, puis installer Docker.
On peut installer Docker CE de différentes manières, en fonction des besoins:
- La plupart des utilisateurs configurent les référentiels Docker et s’installent à partir de ceux-ci pour faciliter les tâches d’installation et de mise à niveau. C'est l'approche recommandée.
- Certains utilisateurs téléchargent le package RPM, l’installent manuellement et gèrent les mises à niveau complètement manuellement. Ceci est utile dans des situations telles que l’installation de Docker sur des systèmes isolés sans accès à Internet.
- Dans les environnements de test et de développement, certains utilisateurs choisissent d’utiliser des scripts de confort automatisés pour installer Docker.
Installation depuis les référentiels
Configurer le référentiel
Avant d'installer Docker CE pour la première fois sur un nouvel ordinateur hôte, il faut configurer le référentiel Docker. On peut ensuite installer et mettre à jour Docker à partir du référentiel.
Mettre en place le référentiel, utiliser la commande suivante pour configurer le référentiel stable.
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Activation des référentiels nightly ou de test: Ces référentiels sont inclus dans le fichier docker.repo ci-dessus mais sont désactivés par défaut. On peut les activer à côté du référentiel stable.
La commande suivante active le référentiel nightly:
sudo yum-config-manager --enable docker-ce-nightly
Pour activer le référentiels de test, exécuter la commande suivante:
sudo yum-config-manager --enable docker-ce-test
On peut désactiver le référentiel nightly ou le référentiel de test en exécutant la commande yum-config-manager
avec l'option --disable
. Pour le réactiver, utiliser l'option --enable
.
La commande suivante désactive le référentiel nightly:
sudo yum-config-manager --disable docker-ce-nightly
Installer Docker CE
Installer la dernière version de Docker CE et de containerd
ou passer à l'étape suivante pour installer une version spécifique:
$ yum install docker-ce docker-ce-cli containerd.io Dépendances résolues ================================================================================ Package Architecture Version Dépôt Taille ================================================================================ Installation : docker-ce x86_64 3:18.09.7-3.el7 docker-ce-stable 19 M Installation pour dépendances : container-selinux noarch 2:2.99-1.el7_6 extras 39 k containerd.io x86_64 1.2.6-3.3.el7 docker-ce-stable 26 M docker-ce-cli x86_64 1:18.09.7-3.el7 docker-ce-stable 14 M Résumé de la transaction ================================================================================ Installation 1 Paquet (+3 Paquets en dépendance)
Plusieurs référentiels Docker sont disponibles, l'installation ou la mise à jour sans spécifier de version dans la commande yum install
ou yum update
installe toujours la version la plus récente possible, ce qui peut ne pas correspondre aux besoins en matière de stabilité.
Pour installer une version spécifique de Docker CE, répertorier les versions disponibles dans le référentiel, puis sélectionner et installer:
Répertorier et trier les versions disponibles
Cet exemple trie les résultats par numéro de version, du plus élevé au plus bas
$ yum list docker-ce --showduplicates | trier -r 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.1.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
La liste renvoyée dépend des référentiels activés. Elle est spécifique à la version de CentOS (indiqué par le suffixe .el7 dans cet exemple).
Installer une version spécifique à l'aide de son nom de package qualifié complet
A savoir le nom du package (docker-ce) et la chaîne de version (2ème colonne) commençant au premier point (:), jusqu'au premier tiret, séparés par un trait d'union (-). Par exemple, docker-ce-18.09.1.
$ sudo yum install docker-ce- <VERSION_STRING> docker-ce-cl- <VERSION_STRING> containerd.io
Installation manuelle des paquets
Si on ne peut pas utiliser le référentiel de Docker pour installer Docker, on peut télécharger le fichier .rpm de la version et l’installer manuellement.
Il faudra télécharger un nouveau fichier chaque fois qu'on souhaite mettre à niveau Docker CE.
Télécharger le paquet
Accéder à https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ et télécharger le fichier .rpm de la version de Docker à installer.
Pour installer un package nightly
ou test
(pré-release), changer le mot stable
dans l'URL ci-dessus en nightly
ou test
.
Installer le paquet
En remplaçant le chemin ci-dessous par celui où a été téléchargé le package Docker.
$ sudo yum install /path/to/package.rpm
Installation en utilisant le script
Docker fournit des scripts à l'adresse get.docker.com
et test.docker.com
pour l'installation rapide et non interactive des versions de Docker CE dans les environnements de développement. Le code source des scripts se trouve dans le référentiel d'installation de docker. L'utilisation de ces scripts n'est pas recommandée pour les environnements de production et il faut comprendre les risques potentiels avant de les utiliser:
- Les scripts nécessitent des privilèges root ou sudo pour s'exécuter. Par conséquent, il faut examiner et auditer attentivement les scripts avant de les exécuter.
- Les scripts tentent de détecter la version et la distribution Linux et de configurer le système de gestion de paquets. De plus, les scripts ne permettent pas de personnaliser les paramètres d'installation. Cela peut conduire à une configuration non souhaitée.
- Les scripts installent toutes les dépendances et les recommandations du gestionnaire de paquets sans demander de confirmation. Cela peut installer un grand nombre de packages, en fonction de la configuration actuelle de l'ordinateur hôte.
- Le script ne fournit pas d'options permettant de spécifier la version de Docker à installer et installe la dernière version publiée dans le canal «périphérique».
- si Docker a déjà été installé sur la machine hôte à l'aide d'un autre mécanisme il ne faut pas utiliser le script
Cet exemple utilise le script sur get.docker.com pour installer la dernière version de Docker CE sur Linux. Pour installer la dernière version de test, utiliser plutôt test.docker.com. Dans chacune des commandes ci-dessous, remplace chaque occurrence de get par test.
Examiner toujours les scripts téléchargés sur Internet avant de les exécuter localement.
$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh get-docker.sh
Installation de Docker EE
Il existe deux manières d'installer et de mettre à niveau Docker Enterprise Edition (Docker EE) sur Centos:
- Référentiel YUM: Configurer un référentiel Docker et installer Docker EE à partir de celui-ci. C'est l'approche recommandée car l'installation et les mises à niveau sont gérées avec YUM et sont plus faciles à faire.
- Package RPM: télécharger le package RPM, installer manuellement et gérer les mises à niveau manuellement. Ceci est utile lors de l'installation de Docker EE sur des systèmes isolés sans accès à Internet.
Installation depuis les référentiels
L’utilisation d’un référentiel à partir duquel installer Docker EE (ou n’importe quel logiciel) présente l’avantage de permettre un certain niveau d’automatisation. Les distributions basées sur RPM telles que Centos utilisent un outil appelé YUM qui fonctionne avec vos référentiels pour gérer les dépendances et fournir des mises à jour automatiques.
Configurer le référentiel
Il suffit de configurer le référentiel une seule fois, après quoi on peut installer Docker EE à partir du référentiel et effectuer plusieurs mises à niveau si nécessaire.
Supprimer les référentiels Docker existants de /etc/yum.repos.d/:
$ sudo rm /etc/yum.repos.d/docker*.repo
Stocker temporairement l'URL (copiée ci-dessus) dans une variable d'environnement. Remplacer <DOCKER-EE-URL>
par l'URL dans la commande suivante. Cette affectation de variable ne persiste pas à la fin de la session:
$ export DOCKERURL="<DOCKER-EE-URL>"
Stocker la valeur de la variable, DOCKERURL (de l'étape précédente), dans une variable yum dans /etc/yum/vars/:
$ sudo -E sh -c 'echo "$DOCKERURL/centos"> /etc/yum/vars/dockerurl'
Ajouter le référentiel stable Docker EE:
$ sudo -E yum-config-manager --add-repo "$DOCKERURL/centos/docker-ee.repo"
Installer Docker EE
Installer la dernière version du paquet ou passer à l'étape suivante pour installer une version spécifique:
$ sudo yum -y install docker-ee docker-ee-cli conteneurd.io
Pour installer une version spécifique de Docker EE (recommandée en production), répertorier les versions et installer:
Répertorier et trier les versions disponibles d'un référentiel
Cet exemple trie les résultats par numéro de version, du plus élevé au plus bas, et est tronqué:
$ sudo yum list docker-ee --showduplicates | sort -r docker-ee.x86_64 18.09.ee.2-1.el7.centos docker-ee-stable-18.09
La liste renvoyée dépend des référentiels activés et est spécifique à la version de Centos (indiquée par .el7 dans cet exemple).
Installer une version spécifique à l'aide de son nom de package qualifié complet
A savoir le nom du package (docker-ee) et la chaîne de version (2ème colonne) commençant au premier signe deux-points (:), jusqu'au premier tiret, séparés par un trait d'union (- ). Par exemple, docker-ee-18.09.1
.
$ sudo yum -y install docker-ee-<VERSION_STRING> docker-ee-cli-<VERSION_STRING> containerd.io
Par exemple, pour installer la version 18.09, exécuter ce qui suit:
sudo yum-config-manager --enable docker-ee-stable-18.09
Installation manuelle des paquets
Pour installer manuellement Docker EE, télécharger le fichier .rpm de la version. Il faudra télécharger un nouveau fichier chaque fois qu'on souhaite mettre à niveau Docker EE.
Télécharger le paquet
Accéder à l'URL du référentiel Docker EE associée à la version d'évaluation dans le navigateur. Accéder à centos/7/x86_64/stable-<VERSION>/Packages
et télécharger le fichier .rpm de la version de Docker à installer.
Installer Docker EE en remplaçant le chemin ci-dessous par celui où on a téléchargé le package Docker.
Installer le paquet
$ sudo yum install /path/to/package.rpm
Mise à jour de Docker
Mise à niveau Docker depuis les référentiels
Pour mettre à niveau Docker, suivre les instructions d'installation, en choisissant la nouvelle version à installer.
Mise à niveau manuelle de Docker
Pour mettre à niveau Docker, télécharger le nouveau fichier de package et répéter la procédure d'installation, en utilisant la mise à niveau de yum -y
en pointant vers le nouveau fichier.
Mise à niveau Docker après avoir utilisé le script d'installation
Si docker-ce a été installé à l'aide du script, il faut mettre à niveau Docker directement à l'aide du gestionnaire de paquets. Il est inutile de réexécuter le script, ce qui peut poser des problèmes s'il tente de ré-ajouter des référentiels déjà ajoutés à la machine hôte.
Désinstallation de Docker
Pour désinstaller le package Docker-ce:
$ sudo yum remove docker-ce
Pour désinstaller le package Docker EE:
$ sudo yum -y enlever docker-ee
Les images, les conteneurs, les volumes ou les fichiers de configuration personnalisés sur l'hôte ne sont pas automatiquement supprimés. Pour supprimer toutes les images, les conteneurs et les volumes:
$ sudo rm -rf /var/lib/docker
Il faudra supprimer manuellement tous les fichiers de configuration modifiés.
Utilisation de Docker.
Démarrage de docker
Docker CE est installé. Il démarre automatiquement sur les distributions basées sur le DEB. Sur les distributions basées sur RPM, il faut le démarrer manuellement à l'aide de la commande systemctl ou service appropriée. Les utilisateurs non root ne peuvent pas exécuter les commandes Docker par défaut.
$ sudo systemctl docker start
Vérifier que Docker CE est installé correctement en exécutant l'image hello-world.
$ sudo docker lance hello-world
Cette commande télécharge une image de test et l'exécute dans un conteneur. Lorsque le conteneur s'exécute, il imprime un message d'information et se ferme.
Droits utilisateurs
Docker est installé et fonctionne, mais il faut utiliser sudo pour exécuter les commandes Docker.
Le groupe docker est créé, mais aucun utilisateur n'est ajouté à ce groupe. Pour utiliser Docker en tant qu'utilisateur non root, il faut ajouter l'utilisateur au groupe docker:
$ sudo usermod -aG docker votre-utilisateur
il faut se déconnecter et se reconnecter pour que cela prenne effet!
L'ajout d'un utilisateur au groupe leur permet d'exécuter des conteneurs pouvant être utilisés pour obtenir les privilèges root sur l'hôte Docker.