Docker
Gegevensvolumes en gegevenscontainers
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
.