Les montages de volume et de liaison Docker sont utilisés pour lier des répertoires sur le système d'exploitation hôte à des emplacements dans le système de fichiers du conteneur. Bien qu'ils soient couramment utilisés pour monter des répertoires entiers, vous pouvez également les utiliser pour créer des liens symboliques vers des fichiers individuels.
Lien symbolique vers Docker depuis l'hôte
Le montage de répertoires entiers fonctionne bien si vous écrasez toute une liste de fichiers de configuration, mais si vous voulez juste en cibler un, vous devrez utiliser un montage de fichier unique. Ceci est également utile si vous souhaitez avoir plusieurs montages dans le même répertoire, mais à partir d'emplacements différents. Cela fonctionne un peu comme un lien symbolique Linux normal, sauf qu'il est géré via Docker et traverse le pont entre l'hôte et le système de fichiers du conteneur.
Les montages de volume Docker normaux nécessitent que vous montiez dans un répertoire cible , dans lequel le volume sera lié.
docker volume create nginx-config docker run -d --name devtest --mount source=nginx-config,target=/etc/nginx nginx:latest
Cependant, avec les montages liés, la source peut être un répertoire ou un fichier sur l'hôte. Les montages de volume ne le prennent pas en charge, et même si vous souhaitez généralement les utiliser, vous devez utiliser les montages de liaison de niveau inférieur si vous souhaitez monter des fichiers uniques.
Pour ce faire, vous pouvez exécuter le conteneur avec le drapeau --mount type=bind
, qui prennent en charge les fichiers individuels si vous spécifiez le chemin :
docker run -it --mount type=bind,source=/path/file.cfg,target=/etc/example/file.cfg nginx sh
Alternativement, si vous vouliez vraiment utiliser des volumes Docker, vous pouvez créer un volume avec uniquement le fichier que vous prévoyez de monter, le monter dans un répertoire temporaire dans le conteneur, puis créer un lien symbolique réel à l'intérieur du conteneur (dans le script de construction Docker ) qui créerait un lien vers le répertoire temporaire avec le fichier. C'est probablement une solution pire qu'un montage lié dans l'ensemble, mais cela vous permet de stocker les données via l'API de volume Docker.