Présentation | Une image Docker est un modèle en lecture seule ; une image peut être utilisée pour créer un conteneur Docker ; Docker fournit un mécanisme très simple pour créer une image ou mettre à jour une image existante. autres L'image peut être utilisée directement. |
Habituellement, lorsque vous commencez à utiliser Docker, nous ne nous soucions pas trop du répertoire par défaut que Docker utilise pour stocker les images et les conteneurs. Lorsque vous expérimentez davantage avec Docker, vous devez appuyer sur le bouton de panique lorsque Docker commence à prendre beaucoup de place. Il est donc temps maintenant de passer au dépannage pour savoir comment modifier l'emplacement de stockage par défaut de Docker. Après avoir rencontré beaucoup de problèmes sur de nombreux sites Web et forums, je n'arrive pas à comprendre les étapes pour modifier le répertoire par défaut des images et des conteneurs Docker sur un hôte CentOS7. Cet article fournit des instructions spécifiques à Centos7 (cela s'applique également à RHEL7). Pour Debian, j'ai pu trouver beaucoup de documentation et d'articles « comment faire » sur Internet, mais pas grand-chose pour Centos7.
2. Comment ?Lorsque nous essayons de modifier l'emplacement de stockage par défaut de Docker, nous devons connaître certaines informations importantes.
L'emplacement de stockage par défaut actuellement utilisé par Docker
Le pilote de stockage actuellement utilisé par Docker
Nouvel espace de stockage pour les images et les conteneurs
L'emplacement par défaut de Docker est /var/lib/docker, où sont stockés toutes les images et conteneurs actuels. Si vous avez des conteneurs en cours d'exécution, arrêtez-les et assurez-vous qu'aucun conteneur n'est en cours d'exécution, puis exécutez la commande suivante pour déterminer le pilote de stockage actuellement utilisé par Docker. (Vous découvrirez pourquoi il est enregistré dans un article ultérieur)
# docker info
Dans les informations de sortie, recherchez la ligne Storage Driver et notez-la. Sur ma machine hôte se trouve DeviceMapper. La prochaine étape consiste à arrêter le service Docker
# sudo systemctl stop docker
Créer un fichier Drop-In
L'étape suivante consiste à créer un fichier Drop-In "docker.conf" dans le répertoire /etc/systemd/system/docker.service.d. Le dossier docker.service.d par défaut n'existe pas. Il faut donc d'abord le créer.
# sudo mkdir /etc/systemd/system/docker.service.d # sudo touch /etc/systemd/system/docker.service.d/docker.conf
La raison de la création du fichier Drop-In est que nous voulons que le service Docker utilise les paramètres spécifiques mentionnés dans le fichier docker.conf pour remplacer les paramètres utilisés par le service par défaut dans /lib/systemd/system/docker.service déposer . Si vous souhaitez en savoir plus sur Drop-In, veuillez lire la documentation system.unit
Définir un nouvel emplacement de stockageOuvrez maintenant docker.conf et ajoutez le contenu suivant :
# sudo vi /etc/systemd/system/docker.service.d/docker.conf [Service] ExecStart= ExecStart=/usr/bin/dockerd --graph="/mnt/new_volume" --storage-driver=devicemapper
Enregistrez et quittez l'éditeur VI, /mnt/new_volume est le nouvel emplacement de stockage et devicemapper est le pilote de stockage actuellement utilisé par docker. Si votre pilote de stockage est différent, entrez la valeur que vous avez examinée et notée à l'étape précédente. Plus d'informations sur les différents lecteurs de stockage sont disponibles dans la documentation officielle de Docker. Vous pouvez maintenant recharger le démon de service et démarrer le service Docker. Cela changera l’emplacement de stockage des nouvelles images et conteneurs.
# sudo systemctl daemon-reload # sudo systemctl start docker
Pour confirmer que tout va bien, exécutez la commande # docker info pour vérifier le répertoire racine de Docker. Il sera remplacé par /mnt/new_volume
. Que devez-vous faire si vous disposez déjà de conteneurs et d’images existants ?Si vous souhaitez migrer des conteneurs et des images existants vers un nouvel emplacement, ne rechargez pas le démon et démarrez le service docker après avoir modifié docker.conf, (
Remarque : je n'ai pas essayé ce qui suit car je n'ai pas besoin de conserver les conteneurs et les images existants, mais ces étapes devraient fonctionner ; veuillez commenter ci-dessous si vous rencontrez des problèmes et des méthodes alternatives. Je vais modifier le message. Avant de vous lancer, sauvegardez vos données.
# cp -rp /var/lib/docker /mnt/new_volume
Créer un lien logiciel (
# mv /var/lib/docker /var/lib/docker-backup-2017-0510 # ln -s /mnt/new_volume/docker /var/lib/docker
Rechargez ensuite le démon et démarrez le service Docker. (
# sudo systemctl daemon-reload # sudo systemctl start docker
Les données existantes devraient maintenant être dans le répertoire source du lien symbolique, et les nouveaux conteneurs et images seront stockés dans le nouvel emplacement, c'est-à-dire /mnt/new_volume/docker, Exécutez # docker info pour confirmer.
(
...Omettre la sortie
Name: docker ID: 5WBA:EF4D:WQ7P:DVRN:JCI4:LWDT:XSR2:G7RE:F5TI:PD3B:A57K:E4QA Docker Root Dir: /mnt/new_volume/docker
...Omettre la sortie
Remarques : Les polices en italique et en lignes horizontales dans le texte signifient les erreurs commises par l'auteur original (l'anglais n'est pas bon, si vous avez mal compris le sens du texte original, merci de le signaler à temps et n'hésitez pas à m'éclairer ). Il y a des notes dans les positions concernées.
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!