2016-01-15 18 views
28

Staram się głębiej w moim zrozumieniu objętości Döcker, a ja mam się ciężko, aby dowiedzieć się różnic/użycia-przypadek:Jaki jest cel objętość w Dockerfile

  • docker volume create komenda
  • docker run -v /path:/host_path
  • wpis w pliku DockerfileVOLUME

ja szczególnie nie rozumiem, co się stało, jeśli wspólnie mbine wpis VOLUME z flagą -v.

Jeśli ktoś dobrze zrozumiał, proszę wyjaśnij mi!

Odpowiedz

23

objętość jest trwałe dane przechowywane w /var/lib/docker/volumes/...

  • Można też zadeklarować je w Dockerfile, co oznacza, że ​​za każdym razem, gdy pojemnik jest podany z obrazka tworzona jest objętość (pusty) , nawet jeśli nie masz żadnej opcji -v.

  • Możesz zadeklarować to w środowisku wykonawczym docker run -v [host-dir:]container-dir.
    łącząc dwa (VOLUME + docker run -v) oznacza, że ​​można zamontować zawartość folderu hosta do swojej objętości utrzymywały się przez pojemnik w /var/lib/docker/volumes/...

  • docker volume create tworzy głośności bez konieczności definiowania Dockerfile i budować wizerunek i uruchomić kontener. Służy do szybkiego zezwolenia innym pojemnikom na zamontowanie wspomnianej objętości.

Gdybyś utrzymywała się pewne treści w objętości, ale od tego czasu usunięte pojemnika (które domyślnie nie usuniętego powiązanych swoją objętość, chyba że używasz doker rm -v), można ponownie załączyć powiedział wolumin do nowego kontenera (deklarującego tę samą objętość).

Zobacz "Docker - How to access a volume not attached to a container?".
Po utworzeniu woluminu w doku można łatwo przywrócić nazwany wolumin do kontenera.

docker volume create --name aname 
docker run -v aname:/apath --name acontainer 
... 
# modify data in /apath 
... 
docker rm acontainer 

# let's mount aname volume again 
docker run -v aname:/apath --name acontainer 
ls /apath 
# you find your data back! 
+1

Załóżmy, że używasz 'Dockerfile' z flagą' VOLUME' i '-v/path:/host_path /'. Treść 'VOLUME' zostanie nadpisana przez zawartość'/host_path/'? – radium226

+0

@ radium226 yes. – VonC

+0

Dzięki wam @VonC, myślę, że to otrzymuję :) A jeśli zrobisz 'docker volume create --name my_volume', a następnie' docker run --volume-from my_volume', skąd wiesz, gdzie montuje się być? – radium226