Zoeken…


Data-only containers

Data-only containers zijn verouderd en worden nu beschouwd als een anti-patroon!

In de dagen van weleer, vóór Dockers volume subopdracht en voordat het mogelijk was om benoemde volumes te maken, verwijderde Docker volumes wanneer er in geen van de containers meer naar verwezen werden. Containers met alleen gegevens zijn verouderd omdat Docker nu de mogelijkheid biedt om benoemde volumes te maken, evenals veel meer hulpprogramma's via de verschillende subopdrachten van het docker volume . Data-only containers worden nu om deze reden als een antipatroon beschouwd.

Veel bronnen op het web van de laatste paar jaar vermelden het gebruik van een patroon dat een "alleen datacontainer" wordt genoemd, wat gewoon een Docker-container is die alleen bestaat om een verwijzing naar een datavolume bij te houden.

Onthoud dat in deze context een "gegevensvolume" een Docker-volume is dat niet vanaf de host is gemount. Ter verduidelijking, een "data volume" is een volume dat ofwel is gemaakt met de VOLUME Dockerfile richtlijn, of met behulp van de -v schakelaar op de opdrachtregel in een docker run command, in het bijzonder met het formaat -v /path/on/container . Daarom is een "data-only houder" is een houder alleen bedoeld zijn om een gegevensvolume bevestigd, die wordt gebruikt door het hebben --volumes-from vlag in een docker run command. Bijvoorbeeld:

docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true

Wanneer de bovenstaande opdracht wordt uitgevoerd, wordt een "alleen-gegevenscontainer" gemaakt. Het is gewoon een lege container waaraan een datavolume is gekoppeld. Het was toen mogelijk om dit volume in een andere container zoals deze te gebruiken:

docker run -d --name="mysql" --volumes-from="mysql-data" mysql

De mysql container heeft nu hetzelfde volume dat ook in mysql-data .

Omdat Docker nu het volume subcommando en de genoemde volumes biedt, is dit patroon nu verouderd en wordt het niet aanbevolen.

Zie Een benoemd volume maken om aan de slag te gaan met de volume subopdracht en benoemde volumes

Een gegevensvolume maken

docker run -d --name "mysql-1" -v "/var/lib/mysql" mysql

Met deze opdracht maakt u een nieuwe container op basis van de mysql afbeelding. Het creëert ook een nieuw datavolume, dat het vervolgens in de container op /var/lib/mysql koppelt. Dit volume zorgt ervoor dat alle gegevens erin blijven bestaan tot na de levensduur van de container. Dat wil zeggen, wanneer een container wordt verwijderd, worden ook de wijzigingen in het bestandssysteem verwijderd. Als een database gegevens in de container opsloeg en de container wordt verwijderd, worden al die gegevens ook verwijderd. Volumes zullen op een bepaalde locatie blijven bestaan, zelfs voorbij wanneer de container wordt verwijderd.

Het is mogelijk om hetzelfde volume in meerdere containers te gebruiken met de --volumes-from opdrachtregeloptie:

docker run -d --name="mysql-2" --volumes-from="mysql-1" mysql

Aan de mysql-2 container is nu het gegevensvolume van mysql-1 gekoppeld, ook met behulp van het pad /var/lib/mysql .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow