Sök…


Data-endast behållare

Behållare med endast data är föråldrade och betraktas nu som ett antimönster!

I forna dagar, innan Docker s volume och innan det var möjligt att skapa namngivna volymer Docker raderade volymer när det inte fanns några fler referenser till dem i alla behållare. Behållare med endast data är föråldrade eftersom Docker nu ger möjlighet att skapa namngivna volymer, såväl som mycket mer användbarhet via de olika docker volume dockningsvolym. Data-endast behållare anses nu vara ett antimönster av detta skäl.

Många resurser på webben under de senaste åren nämner att använda ett mönster som kallas en "data-endast behållare", som helt enkelt är en Docker-behållare som bara finns för att hålla en referens till en datavolym runt.

Kom ihåg att i detta sammanhang är en "datavolym" en Docker-volym som inte är monterad från värden. För att klargöra är en "datavolym" en volym som skapas antingen med VOLUME Dockerfile-direktivet eller med -v omkopplaren på kommandoraden i ett docker run , specifikt med formatet -v /path/on/container . Därför är en "data-endast behållare" en behållare vars enda syfte är att ha en datavolym bifogad, som används av - --volumes-from flaggan i ett docker run . Till exempel:

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

När kommandot ovan körs skapas en "data-endast behållare". Det är helt enkelt en tom behållare som har en datavolym bifogad. Det var då möjligt att använda denna volym i en annan behållare så:

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

mysql behållaren har nu samma volym i den som också finns i mysql-data .

Eftersom Docker ger nu volume och namngivna volymer är detta mönster nu föråldrade och rekommenderas inte.

För att komma igång med volume och namngivna volymer se Skapa en namngiven volym

Skapa en datavolym

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

Detta kommando skapar en ny behållare från mysql bilden. Det skapar också en ny datavolym som den sedan monteras i behållaren på /var/lib/mysql . Denna volym hjälper all data inuti den att kvarstå utöver behållarens livslängd. Det vill säga när en behållare tas bort tas dess filsystemändringar också bort. Om en databas lagrade data i behållaren och behållaren tas bort tas alla dessa uppgifter också. Volymerna kommer att kvarstå en viss plats även bortom när behållaren tas bort.

Det är möjligt att använda samma volym i flera containrar med --volumes-from :

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

mysql-2 behållaren har nu datavolymen från mysql-1 ansluten till den, även med sökvägen /var/lib/mysql .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow