Dans le contexte de docker, je comprends ce que sont les couches d'une image et quelle est la couche inscriptible supérieure. Si j'exécute le conteneur docker sans arguments -v, les volumes seront-ils créés? Si je spécifie un volume (qui n'est pas un montage à un emplacement dans l'hôte), le volume devient-il le calque inscriptible de ce conteneur?Quelle est la différence entre la couche conteneur et le volume dans Docker?
Répondre
Les volumes et les couches d'image sont des concepts distincts dans Docker. Pour votre première question, aucun, aucun volume n'est créé sans -v
étant utilisé (en ignorant pour l'instant le fait que le format Dockerfile
a un verbe VOLUME
). Si vous spécifiez un volume fourni par un pilote de volume (le répertoire par défaut étant un répertoire local qui se liera à l'emplacement cible dans le système de fichiers de votre conteneur), ce volume n'a aucun rapport avec les couches d'image, y compris Couche supérieure accessible en écriture fournie par le pilote de stockage principal utilisé dans votre moteur Docker. Plus précisément, le pilote de stockage utilisé contrôle la manière dont la couche de couche est gérée et la couche supérieure "r/w" est gérée. Par exemple, le pilote overlay ou devicemapper ou btrfs gère le montage des couches d'image et crée et gère la couche supérieure.
Les volumes entrent en jeu en dehors de cela en étant liés à des chemins existants (ou créés) dans l'image du système de fichiers. Lorsque vous quittez le conteneur, ces volumes sont conservés dans leur emplacement source (par exemple pour un pilote de volume local/par défaut, dans /var/lib/docker/volumes/<name>
) et la couche de couche non montée aura, sous la gestion du pilote de stockage utilisé, la "couche supérieure" modifiée de la pile de calques, sauf si vous avez retiré votre conteneur à la sortie (--rm
). Ce sont deux concepts gérés séparément et le système de volume n'a pas d'interaction avec le pilote backend de stockage.
Si j'exécute un conteneur docker sans argument -v, les volumes seront-ils créés?
-v n'est pas pour créer le volume, juste pour monter les données de et à
-v [host_path]: [container_path],
ici host_path , le chemin du répertoire de votre serveur où vous voulez convertir les données en
tainer_path, chemin du répertoire contenant la date de montage
Si je spécifier un volume (ce qui est un support vers un emplacement dans l'hôte) fait le volume se couche inscriptible de ce conteneur?
Lorsque le chemin n'existe pas dans l'hôte. Mais vous l'avez monté en conteneur, il y a deux cas ici.
CASE 1: Si vous voulez monter des fichiers de configuration de votre machine conteneur si le conteneur attend à ce que le fichier en cours d'exécution, elle génère une erreur dans les journaux
CASE 2: Si vous voulez monter le volume du conteneur à la machine hôte.Lorsque cotainer démarre, il crée un dossier dans la machine hôte et écrit les données dans le répertoire monté par la machine hôte.
Merci. Aide beaucoup –