Docker의 볼륨에 대해 더 깊이 이해하려고 노력하고 있으며 다음과 같은 차이점 / 사용 사례를 파악하는 데 어려움을 겪고 있습니다.
docker volume create
명령- 그만큼
docker run -v /path:/host_path
- 파일 의
VOLUME
항목Dockerfile
특히 VOLUME
항목을 -v
플래그 와 결합하면 어떤 일이 발생하는지 이해하지 못합니다 .
답변
볼륨은 다음에 저장된 영구 데이터입니다. /var/lib/docker/volumes/...
-
Dockerfile에서 선언 할 수 있습니다. 즉, 컨테이너가 이미지에서 시작될 때마다 옵션 이 없더라도 볼륨이 생성됩니다 ( empty )
-v
. -
런타임에 선언 할 수 있습니다
docker run -v [host-dir:]container-dir
.
두 개 (VOLUME
+docker run -v
)를 결합하면 호스트 폴더의 내용을 컨테이너에 의해 유지되는 볼륨에 마운트 할 수 있습니다./var/lib/docker/volumes/...
-
docker volume create 는 Dockerfile을 정의하고 이미지를 빌드하고 컨테이너를 실행할 필요없이 볼륨을 생성 합니다. 다른 컨테이너가 해당 볼륨을 빠르게 마운트 할 수 있도록하는 데 사용됩니다.
볼륨에 일부 콘텐츠를 유지했지만 그 이후 컨테이너를 삭제 한 경우 (기본적으로 docker rm -v를 사용하지 않는 한 관련 볼륨을 삭제하지 않음) 해당 볼륨을 새 컨테이너에 다시 연결할 수 있습니다 (선언 같은 볼륨).
” Docker-컨테이너에 연결되지 않은 볼륨에 액세스하는 방법 “을 참조하십시오 .
docker volume create를 사용하면 명명 된 볼륨을 컨테이너에 쉽게 다시 연결할 수 있습니다.
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!
답변
VOLUME
volumes-from
런타임 매개 변수 와 결합하면 명령이 흥미로워집니다 .
다음 Dockerfile이 주어지면 :
FROM busybox
VOLUME /myvolume
다음을 사용하여 이미지를 만듭니다.
docker build -t my-bb .
다음을 사용하여 컨테이너를 회전합니다.
docker run --rm -it --name my-first-bb my-bb
가장 먼저 주목할 점은이 이미지에라는 폴더가 있다는 것 myvolume
입니다. 그러나 컨테이너를 종료하면 볼륨도 제거되므로 특히 흥미롭지 않습니다.
이 폴더에 빈 파일을 생성하므로 컨테이너에서 다음을 실행합니다.
cd myvolume
touch hello.txt
이제 새 컨테이너를 회전하되 다음과 동일한 볼륨을 공유합니다 my-first-bb
.
docker run --rm -it --volumes-from my-first-bb --name my-second-bb my-bb
당신은 그 볼 my-second-bb
파일이 들어 hello.txt
있는 myvolume
폴더를.
두 컨테이너를 모두 종료하면 볼륨도 제거됩니다.