이 VOLUME
지침은 런타임에 Docker 컨테이너에 데이터 볼륨을 생성합니다. 인수로 제공 VOLUME
되는 디렉토리는 Union File System 을 우회하는 디렉토리 이며 주로 영구 및 공유 데이터에 사용됩니다.
실행하면 docker inspect <your-container>
하면 Mounts
섹션 아래 Source
에 호스트의 디렉터리 위치 Destination
를 나타내는가 있고 컨테이너에 탑재 된 디렉터리 위치를 나타내는가 표시됩니다. 예를 들면
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
다음은 3 가지 사용 사례입니다 docker run -v
.
docker run -v /data
: 이는 VOLUME
Dockerfile 에서 명령어 를 지정하는 것과 유사합니다 .
docker run -v $host_path:$container_path
: 이것은 당신이 마운트 할 수 있습니다 $host_path
$container_path
런타임 중에 호스트 에서 컨테이너 . 개발 중에는 호스트의 소스 코드를 컨테이너와 공유하는 데 유용합니다. 프로덕션에서는 호스트의 DNS 정보 (에서 찾을 수 있음 /etc/resolv.conf
) 또는 비밀과 같은 것을 컨테이너 에 마운트하는 데 사용할 수 있습니다 . 반대로이 기술을 사용하여 컨테이너의 로그를 호스트의 특정 폴더에 쓸 수도 있습니다. 둘 다 $host_path
및$container_path
절대 경로 여야합니다.
docker run -v my_volume:$container_path
: 이렇게하면 컨테이너에 데이터 볼륨이 생성 $container_path
되고 이름이 지정됩니다 my_volume
. 을 사용하여 볼륨을 만들고 이름을 지정하는 것과 본질적으로 동일 docker volume create my_volume
합니다. 이와 같은 볼륨 이름 지정은 Flocker 와 같은 다중 호스트 스토리지 드라이버를 사용하는 컨테이너 데이터 볼륨 및 공유 스토리지 볼륨에 유용 합니다.
Dockerfile에서는 호스트 폴더를 데이터 볼륨으로 마운트하는 방법을 사용할 수 없습니다. 도커 문서 를 인용하려면 ,
참고 : 이식성 및 공유 목적으로 인해 Dockerfile에서 사용할 수 없습니다. 호스트 디렉터리는 본질적으로 호스트에 따라 다르므로 Dockerfile에 지정된 호스트 디렉터리는 모든 호스트에서 작동하지 않을 수 있습니다.
이제 비 개발 환경의 컨테이너에 파일을 복사하려는 경우 Dockerfile에서 ADD
또는 COPY
지침을 사용할 수 있습니다 . 이것은 비 개발 배포에 일반적으로 사용하는 것입니다.
COPY
으로ADD
. 거의 동일하지만ADD
URL 및 아카이브 파일에 대한 몇 가지 추가 기능이 있습니다.