도커 1.9.0 이상
볼륨 API 사용
docker volume create --name hello
docker run -d -v hello:/container/path/for/volume container_image my_command
이는 새로운 볼륨을 위해 데이터 전용 컨테이너 패턴을 포기해야한다는 것을 의미합니다.
실제로 볼륨 API는 데이터 컨테이너 패턴을 달성하는 더 좋은 방법 일뿐입니다.
-v volume_name:/container/fs/path
Docker 로 컨테이너를 만들면 다음을 수행 할 수있는 명명 된 볼륨이 자동으로 생성됩니다.
- 를 통해 나열
docker volume ls
- 를 통해 식별
docker volume inspect volume_name
- 일반 디렉토리로 백업
--volumes-from
연결을 통해 이전과 같이 백업
새로운 볼륨 API는 매달려있는 볼륨을 식별 할 수있는 유용한 명령을 추가합니다.
docker volume ls -f dangling=true
그런 다음 이름을 통해 제거하십시오.
docker volume rm <volume name>
@mpugach가 주석에서 밑줄을 긋 듯이 멋진 원 라이너로 모든 매달려있는 볼륨을 제거 할 수 있습니다.
docker volume rm $(docker volume ls -f dangling=true -q)
# Or using 1.13.x
docker volume prune
도커 1.8.x 이하
프로덕션에 가장 적합한 방법은 데이터 전용 컨테이너 를 사용하는 것 입니다.
데이터 전용 컨테이너는 베어 본 이미지에서 실행되며 실제로 데이터 볼륨을 노출하는 것 외에는 아무 것도 수행하지 않습니다.
그런 다음 다른 컨테이너를 실행하여 데이터 컨테이너 볼륨에 액세스 할 수 있습니다.
docker run --volumes-from data-container some-other-container command-to-execute
- 여기서 다른 용기를 배열하는 방법에 대한 좋은 그림을 얻을 수 있습니다.
- 여기에 볼륨의 작동 방법에 대한 좋은 통찰력이있다.
에서는 블로그 게시물 소위 잘 설명가 볼륨 패턴 용기 갖는 요점 명확히 데이터 만 용기 .
Docker 설명서에는 컨테이너에 대한 명확한 설명이 볼륨 / 패턴으로 표시되어 있습니다.
다음은 Docker 1.8.x 이하의 백업 / 복원 절차입니다.
지원:
sudo docker run --rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
- --rm : 컨테이너가 나올 때 컨테이너를 제거합니다
- --volumes-from DATA : DATA 컨테이너가 공유하는 볼륨에 연결
- -v $ (pwd) : / backup : 컨테이너에 현재 디렉토리를 바인드 마운트합니다. tar 파일을
- busybox : 작고 간단한 이미지-빠른 유지 보수에 적합
- tar cvf /backup/backup.tar / data : / data 디렉토리에있는 모든 파일의 압축되지 않은 tar 파일을 만듭니다.
복원:
# Create a new data container
$ sudo docker run -v /data -name DATA2 busybox true
# untar the backup files into the new container᾿s data volume
$ sudo docker run --rm --volumes-from DATA2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
data/
data/sven.txt
# Compare to the original container
$ sudo docker run --rm --volumes-from DATA -v `pwd`:/backup busybox ls /data
sven.txt
다음은 컨테이너 및 데이터 컨테이너에 동일한 이미지를 사용하는 것이 좋은 이유를 설명 하는 우수한 Brian Goff 의 멋진 기사입니다 .