Comment monter ou lier symboliquement un seul fichier dans un conteneur Docker

0
206

Le volume Docker et les montages de liaison sont utilisés pour lier les répertoires du système d'exploitation hôte aux emplacements du conteneur’ système de fichiers. Bien qu'ils soient couramment utilisés pour monter des répertoires entiers, vous pouvez également les utiliser pour créer un lien symbolique 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 à fichier unique. Ceci est également utile si vous souhaitez avoir plusieurs montages dans le même répertoire, mais à partir d'emplacements différents. Il fonctionne un peu comme un lien symbolique Linux ordinaire, sauf qu'il est géré via Docker et qu'il 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 de liaison, la source peut être un répertoire ou fichier sur l'hôte. Les montages de volume ne prennent pas en charge cela, et bien que vous souhaitiez 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 l'indicateur –mount type=bind , qui prend 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 Advertisement

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, montez-le dans un répertoire temporaire dans le conteneur , puis créez un lien symbolique réel à l'intérieur du conteneur (dans le script de génération Docker) qui établirait un lien vers le répertoire temporaire avec le fichier. C'est probablement une solution pire qu'un montage de liaison dans l'ensemble, mais cela vous permet de stocker les données via l'API de volume Docker.