Maison >Opération et maintenance >Docker >L'installation hors ligne de Docker ne démarre pas

L'installation hors ligne de Docker ne démarre pas

PHPz
PHPzoriginal
2023-04-25 09:02:551531parcourir

Dans la vague actuelle de cloud computing et de conteneurisation, Docker est devenu une technologie de conteneurisation d'applications grand public et est devenu l'un des outils les plus largement utilisés dans le domaine de l'exploitation, de la maintenance et du développement. Dans ce contexte, l'installation hors ligne de Docker est également devenue une exigence très courante. Étant donné que de nombreux utilisateurs ne peuvent pas se connecter à Internet ou que les connexions Internet sont interdites pour des raisons de sécurité et d'autres facteurs, l'installation hors ligne est devenue l'une des méthodes d'installation les plus pratiques. Cependant, lors de l'installation hors ligne de Docker, l'installation réussit souvent mais le démarrage échoue, ce qui constitue un problème très gênant pour les débutants.

Cet article partira de l'opération réelle, présentera la méthode d'installation hors ligne de Docker et effectuera une analyse détaillée de l'échec de démarrage pour vous fournir un guide détaillé.

1. Installation hors ligne de Docker

Il existe deux façons d'installer Docker hors ligne : l'une consiste à installer en téléchargeant le fichier binaire Docker et l'autre consiste à installer en configurant la source yum. Le premier convient principalement aux serveurs sans conditions de réseau, tandis que le second convient à l'installation hors ligne d'environnements de développement Linux.

1. Installer en téléchargeant le fichier binaire Docker

Le principe de cette méthode est relativement simple, c'est-à-dire télécharger le fichier binaire Docker en local puis l'installer. Les étapes spécifiques sont les suivantes :

1.1 Obtenez le fichier binaire Docker

Téléchargez la version correspondante du fichier binaire Docker sur le site officiel https://www.docker.com/. Lors du téléchargement, vous devez connaître les informations sur le système d'exploitation actuel. Pour le système centos, vous pouvez choisir de télécharger le fichier binaire correspondant à l'adresse suivante.

https://download.docker.com/linux/static/stable/x86_64/ docker-version number.tgz

1.2 Installez le fichier binaire Docker

Lors de l'installation, vous devez décompresser le fichier binaire téléchargé et extraire le Déplacez les fichiers docker et dockerd vers le répertoire /usr/bin.

tar -xvf docker-version number.tgz
cp docker/* /usr/bin

2 Installez en configurant la source yum

Sous le système centos, vous pouvez installer Docker hors ligne en configurant la source yum. Les étapes spécifiques sont les suivantes :

2.1 Obtenez le source yum de Docker

Téléchargez la version correspondante du package d'installation de Docker sur le site officiel https://www.docker.com/. Lors du téléchargement, vous devez connaître les informations sur le système d'exploitation actuel et télécharger le package RPM correspondant à la version du système.

2.2 Créer une nouvelle source yum locale

Créez un nouveau répertoire source yum localement, copiez le package d'installation Docker téléchargé dans ce répertoire et créez le répertoire via la commande createrepo

mkdir /var/docker
cp docker-ce * .rpm /var/docker
createrepo /var/docker

2.3 Configurer yum source

Créez un nouveau fichier de dépôt dans le répertoire /etc/yum.repos.d et écrivez le contenu suivant

[docker-local]
nom =Docker Local repo
baseurl=file:///var/docker
enabled=1
gpgcheck=0

2.4 Installer Docker

Exécutez la commande suivante pour installer Docker

yum install docker-ce

2. solution

1. Description du problème

Après avoir terminé l'installation hors ligne ci-dessus de Docker, vous pouvez rencontrer un échec de démarrage de Docker avec l'erreur suivante :

$ sudo systemctl start docker
La tâche pour docker.service a échoué car le processus de contrôle s'est terminé. avec le code d'erreur.
Voir "systemctl status docker.service" et "journalctl -xe" pour plus de détails.

L'exécution de la commande systemctl status docker.service montre que la cause de l'échec de démarrage est "ExecStart" dans le fichier docker.service "La commande n'a pas pu s'exécuter correctement :

$ sudo systemctl status docker.service
...
30 avril 07:40:32 localhost.localdomain systemd[1] : Démarrage du moteur de conteneur d'application Docker.
30 avril 07:40 : 32 localhost .localdomain systemd[1] : docker.service : processus principal quitté, code=exited, status=1/FAILURE
30 avril 07:40:32 localhost.localdomain systemd[1] : l'unité docker.service est entrée dans un état d'échec.
30 avril 07:40:32 localhost.localdomain systemd[1] : échec de docker.service.
30 avril 07:40:32 localhost.localdomain systemd[1] : délai d'attente de docker.service dépassé, redémarrage de la planification.
30 avril 07 : 40 : 32 localhost.localdomain systemd[1] : moteur de conteneur d'application Docker arrêté. "level = erreur msg="échec du notificateur systemd : impossible de charger le module systemd "libsystemd.so" : impossible d'ouvrir le o

dockerd-current[14552] partagé : échec du démarrage du démon : erreur d'initialisation du contrôleur réseau : échec de la liste des adresses de pont : PredéfiniLocalScopeDefaultNetworks Échec de la liste : prédéfini

dockerd-current[14552] : erreur de démarrage du démon : erreur d'initialisation du contrôleur de réseau : échec de la liste des adresses de pont : PredéfiniLocalScopeDefaultNetworks Échec de la liste : prédéfini
systemd[1] : docker.service : processus principal terminé, code = quitté, statut =1 /FAILURE
systemd[1] : échec du démarrage de Docker Application Container Engine.
systemd[1] : l'unité docker.service est entrée dans un état d'échec.
systemd[1] : docker.service a échoué.

2. Analyse du problème
.

Grâce au message d'erreur ci-dessus, vous pouvez constater que la raison pour laquelle Docker ne démarre pas est que le contrôleur réseau de Docker ne peut pas démarrer. Plus précisément, cela est dû au fait que le contrôleur réseau de Docker gère le réseau de conteneurs via le pare-feu iptables, et que le pare-feu interdit par défaut tout trafic non local. Pour Docker, les règles pertinentes seront automatiquement ajoutées à iptables lors du premier démarrage. Cependant, si Docker installé hors ligne est démarré pour la première fois, l'ajout de règles échouera, entraînant l'échec du démarrage du contrôleur réseau. La manifestation spécifique est que lorsque l'utilisateur démarre Docker, Docker créera automatiquement un pont nommé docker0 basé sur l'adresse IP locale. Si cette opération échoue, Docker ne pourra pas démarrer.

3. Résolution des problèmes

Il existe deux manières principales de résoudre ce problème :

3.1 Créer un pont docker0

La création manuelle d'un pont docker0 peut résoudre ce problème. Sous centos, vous pouvez exécuter la commande suivante pour créer manuellement un pont réseau docker0. :

sudo ip link add name docker0 type bridge
sudo ip addr add dev docker0 172.17.0.1/16
sudo ip link set dev docker0 up

Après avoir terminé les opérations ci-dessus, redémarrez Docker et exécutez la commande suivante en tant qu'administrateur :

$ sudo systemctl start docker

pour terminer le démarrage de Docker.

3.2 Modifier les règles du pare-feu

Désactiver le pare-feu ou modifier les règles du pare-feu est également un moyen efficace de résoudre ce problème. Lors de la désactivation du pare-feu, vous pouvez utiliser la commande suivante :

$ systemctl stop firewalld
$ systemctl verify firewalld

Cependant, cette situation n'est pas recommandée. Il est recommandé de conserver le pare-feu du système autant que possible selon les exigences de sécurité. .

Si vous souhaitez modifier les règles iptables, vous pouvez ajouter les règles via la commande suivante :

$ sudo iptables -P FORWARD ACCEPT
$ sudo iptables -I FORWARD -j ACCEPT
$ sudo service iptables save

Après avoir exécuté les opérations ci-dessus, redémarrez Docker peut démarrer normalement.

3. Résumé

Grâce à l'introduction de cet article, nous pouvons voir que lors de l'installation de Docker hors ligne, Docker peut ne pas démarrer en raison de problèmes de réseau. À l'heure actuelle, nous devons comprendre le principe de fonctionnement du contrôleur réseau de Docker et le configurer manuellement ou apporter certaines modifications au pare-feu iptables pour enfin résoudre le problème de l'échec du démarrage de Docker. Bien entendu, nous pouvons également résoudre de tels problèmes en vérifiant à temps des messages d’erreur spécifiques et en effectuant une analyse.

Par conséquent, lors de l'installation et du démarrage hors ligne de Docker, nous devons rester prudents et patients, continuer à expérimenter et déboguer, et enfin trouver une méthode appropriée pour résoudre le problème.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn