VOLUMEInstrukcja tworzy wolumin danych w kontenerze Docker przy starcie. Katalog podany jako argument VOLUMEto katalog, który pomija Union File System i jest używany głównie do przechowywania trwałych i udostępnianych danych.
Jeśli uruchomisz docker inspect <your-container>, zobaczysz pod Mountssekcją, Sourcektóra reprezentuje lokalizację katalogu na hoście i Destinationktóra reprezentuje lokalizację zamontowanego katalogu w kontenerze. Na przykład,
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
Oto 3 przypadki użycia docker run -v:
docker run -v /data: Jest to analogiczne do określenia VOLUMEinstrukcji w pliku Dockerfile.
docker run -v $host_path:$container_path: Pozwala to na instalację $host_pathz hosta do $container_pathkontenera w czasie wykonywania. W programowaniu jest to przydatne do udostępniania kodu źródłowego na hoście z kontenerem. W środowisku produkcyjnym można to wykorzystać do zamontowania /etc/resolv.confw kontenerze takich rzeczy, jak informacje DNS hosta (znalezione w ) lub sekrety. I odwrotnie, możesz również użyć tej techniki do zapisania dzienników kontenera w określonych folderach na hoście. Obie $host_pathi $container_pathmuszą być ścieżkami absolutnymi.
docker run -v my_volume:$container_path: Spowoduje to utworzenie wolumenu danych w kontenerze w lokalizacji $container_pathi nazwanie go my_volume. Zasadniczo jest to to samo, co tworzenie i nazywanie wolumenu przy użyciu docker volume create my_volume. Takie nazwanie woluminu jest przydatne w przypadku woluminu danych kontenera i woluminu pamięci współużytkowanej przy użyciu sterownika pamięci masowej dla wielu hostów, takiego jak Flocker .
Zwróć uwagę, że podejście polegające na zamontowaniu folderu hosta jako woluminu danych nie jest dostępne w pliku Dockerfile. Cytując dokumentację Dockera ,
Uwaga: nie jest to dostępne w pliku Dockerfile ze względu na jego przenośność i cel udostępniania. Ponieważ katalog hosta jest z natury zależny od hosta, katalog hosta określony w pliku Dockerfile prawdopodobnie nie działałby na wszystkich hostach.
Teraz, jeśli chcesz skopiować pliki do kontenerów w środowiskach innych niż programistyczne, możesz użyć instrukcji ADDlub COPYw pliku Dockerfile. To jest to, czego zwykle używam do wdrażania innych niż programistyczne.
COPYsięADD. Są prawie takie same, aleADDmają dodatkowe możliwości zapisywania adresów URL i plików archiwów, które mogą być zaskakujące.