Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 9379|Répondre: 0

Le fichier ou le dossier n’existe pas lorsque le volume Docker est monté

[Copié le lien]
Publié sur 08/11/2021 09:20:35 | | |
Arrière-plan

Docker Volume nous permet de monter dynamiquement certains fichiers (comme les fichiers de configuration) pour écraser les fichiers originaux dans l’image lors du lancement d’un conteneur Docker, mais que se passe-t-il si nous montons un dossier ou un fichier qui n’existe pas encore sur l’hôte dans le conteneur ? LZ a rencontré un tel problème dans son travail, il l’a donc pratiqué lui-même et a consigné les résultats expérimentaux comme suit :

Montage de dossier

Le comportement de Docker lors du montage des dossiers est uniforme, comme suit :

  • Si le dossier n’existe pas, il est créé en premier (ou récursivement s’il s’agit d’un dossier multi-niveaux)
  • Écraser le contenu du dossier dans le conteneur avec le contenu du dossier sur l’hôte


Les détails sont les suivants :

Le dossier sur l’hôte existe et n’est pas vide

hôte
conteneur
Résultat du montage
Le dossier non vide A existeDossier B qui n’existe pasCréez d’abord le dossier B dans Contanier, puis copiez tous les fichiers du dossier A dans B
Le dossier non vide A existeLe dossier non vide B existeD’abord, videz le contenu original du dossier chinois contenant B, puis copiez la copie chinoise A vers B

Que le dossier B existe ou non dans le conteneur, A écrasera complètement le contenu de B

Le dossier sur l’hôte existe, mais est vide

hôte
conteneur
Résultat du montage
Dossier vide A qui existeLe dossier non vide B existeLe contenu du conteneur du dossier chinois B est vidé

Le contenu du dossier correspondant dans le conteneur est vidé

Le dossier hôte n’existe pas

hôte
conteneur
Résultat du montage
Dossier A qui n’existe pasLe dossier non vide B existeCréez le dossier A sur l’hôte, et le contenu du dossier chinois B du conteneur est vidé
Dossiers A/B/C qui n’existent pasLe dossier non vide B existeCréer les dossiers A/B/C sur l’hôte, et le contenu du dossier chinois contenant B est vidé

Le contenu du dossier correspondant dans le conteneur est vidé

résumé

Le dossier hôte écrasera certainement le dossier chinois conteneur :

hôte
conteneur
Résultat du montage
Le dossier n’existe pas/le dossier existe mais est videLe dossier n’existe pas/n’existe pas mais est vide/existe et n’est pas videUn morceau chinois du contenant est couvert (vidé)
Le dossier existe et n’est pas videLe dossier n’existe pas/n’existe pas mais est vide/existe et n’est pas videle contenu du dossier chinois contenant est écrasé (le contenu original est vidé, et le contenu du dossier sur l’hôte est écrasé)

Montage de fichier

La plus grande différence entre le montage de fichiers et le montage de dossiers est :

  • Docker interdit de monter des fichiers qui n’existent pas sur l’hôte vers des fichiers déjà présents dans le conteneur
  • Le montage des fichiers n’a aucun effet sur les autres fichiers dans le même dossier

De plus, son comportement d’écrasement est cohérent avec le montage de dossiers, c’est-à-dire :

  • Écraser le contenu du fichier dans le conteneur avec le contenu du fichier sur l’hôte


Les détails sont les suivants :

hôte

hôte
conteneur
Résultat du montage
Des fichiers qui n’existent pas configA.jsDes documents déjà existants congfigB.jsErreur, essayez-vous de monter un dossier sur un fichier (ou inversement) ? Vérifiez si le chemin hôte spécifié existe et est le type attendu. Il génère deux répertoires vides configA.js et configB.js sur l’hôte en même temps, mais le conteneur ne peut pas démarrer

hôte

hôte
conteneur
Résultat du montage
Dossier actuel configA.jsDossier actuel congfigB.jsl’élément chinois contenant configB.js reste le même, mais le contenu du fichier est écrasé par le contenu congfigA.js
Dossier actuel configA.jsDes fichiers qui n’existent pas congfigB.jsUn nouveau fichier configB.js dans le conteneur avec le contenu du fichier configA.js reste inchangé configB.js tous les autres fichiers du fichier

résumé

Le fichier sur l’hôte écrasera toujours le dossier chinois du conteneur

hôte
conteneur
Résultat du montage
Fichiers qui n’existent pasDocuments déjà existantsActes interdits
Documents existantsFichiers qui n’existent pas / fichiers qui existent déjàAjout/écraser (crée un répertoire s’il n’existe pas)

conclusion

Montage de dossier

  • Si vous autorisez le montage de dossiers inexistants ou vides dans le conteneur, les dossiers correspondants seront vidés
  • Attacher un dossier non vide à un conteneur écrasera le dossier original dans le conteneur

Montage de fichier

  • Il est interdit de monter des fichiers inexistants sur des fichiers déjà présents dans le conteneur
  • Les fichiers existants seront écrasés lorsqu’ils seront attachés au conteneur, et si ces fichiers n’existent pas, ils seront créés

Scénarios d’application

  • D’après l’analyse ci-dessus, on peut voir que le montage de dossier sert à écraser des fichiers dans l’ensemble du dossier, ce qui permet d’être utilisé lorsqu’un grand nombre de fichiers doit être monté dans le conteneur, de plus, si un dossier vide ou inexistant est monté, il est généralement utilisé à l’envers : c’est-à-dire qu’après le démarrage du conteneur, certains fichiers (comme les logs) peuvent être générés sous le dossier du point de montage dans le conteneur, et à ce moment-là, ils peuvent être directement vus dans le dossier sur l’hôte correspondant.
  • Le montage de fichiers est souvent utilisé pour monter des fichiers de configuration afin de modifier dynamiquement la configuration par défaut à l’exécution, car cela ne remplace qu’un seul fichier sans affecter les autres fichiers du même dossier dans le conteneur.

Transféré depuis :La connexion hyperlientérée est visible.

(Fin)




Précédent:Elasticsearch utilise elasticdump pour sauvegarder et migrer les données
Prochain:Solution d’exception d’erreur POI Docker
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com