Een enkel bestand koppelen of symboliseren in een Docker-container

0
161

Docker-volume- en bind-mounts worden gebruikt om mappen op het host-besturingssysteem te binden aan locaties in het bestandssysteem van de container. Hoewel ze vaak worden gebruikt om hele mappen aan te koppelen, kun je ze ook gebruiken om afzonderlijke bestanden te symboliseren.

Symlink naar Docker vanaf de host

Symlink naar Docker van de host

h2>

Het aankoppelen van volledige mappen werkt goed als u een hele lijst met configuratiebestanden overschrijft, maar als u er slechts één wilt targeten, moet u een enkel bestand aankoppelen. Dit is ook handig als u meerdere koppelingen in dezelfde map wilt hebben, maar vanaf verschillende locaties. Het werkt net als een gewone Linux-symlink, behalve dat het via Docker wordt afgehandeld en de brug tussen host- en containerbestandssysteem overschrijdt.

Normale Docker-volumekoppelingen vereisen dat u naar een doelmap wordt gemount, waarbinnen het volume wordt gekoppeld.

docker-volume aanmaken nginx-config docker run -d –name devtest –mount source=nginx-config,target=/etc/nginx nginx:latest

Bij bind-mounts kan de bron echter een directory zijn of bestand op de host. Volume-mounts ondersteunen dit niet, en hoewel je ze meestal wilt gebruiken, moet je de bind-mounts van een lager niveau gebruiken als je afzonderlijke bestanden wilt mounten.

Om dit te doen, kun je de container met de vlag –mount type=bind , die individuele bestanden ondersteunt als u het pad specificeert:

docker run -it –mount type=bind,source=/path/file.cfg,target=/etc /example/file.cfg nginx sh Advertentie

Als u echt Docker-volumes wilt gebruiken, kunt u ook een volume maken met alleen het bestand dat u wilt koppelen, en dit koppelen aan een tijdelijke map in de container , en maak vervolgens een echte symlink in de container (in het Docker-buildscript) die met het bestand naar de tijdelijke map zou linken. Dat is waarschijnlijk een slechtere oplossing dan een algemene binding, maar je kunt de gegevens wel opslaan via de Docker-volume-API.