도커 볼륨 백업 및 복원 생성 된 데이터를 올바르게 백업하는

Docker를 사용하여 CentOS 6.4 서버에 일부 서비스를 배포하고 있으며 생성 된 데이터를 올바르게 백업하는 방법을 알아 내려고 노력 중입니다.

예를 들어, 서비스 중 하나는 사용자가 파일을 업로드 할 수있는 웹 응용 프로그램입니다. 이 컨테이너의 경우 /files백업하려는 볼륨이 있습니다. 이 블로그 게시물볼륨에 대한 도커 설명서 에서 언급했듯이 호스트 마운트는 이식성이 떨어지기 때문에 다소 찌그러진 것처럼 보입니다 .

같은 블로그 게시물 에서 볼륨의 파일에 액세스하기 위해 호스트 마운트가 필요 하지 않다는 docker inspect것을 알고 있습니다. 파일 위치를 찾는 데 사용할 수 있습니다 .

그러나 여기 내 문제가 있습니다. 컨테이너와 관련 볼륨을 빌드하는 데 필요한 도커 파일 만 백업하는 것에 대해 생각하고있었습니다. 백업에서 모든 것을 복원해야 할 경우 어떤 볼륨 디렉토리가 어떤 컨테이너에 해당하는지 아는 방법은 무엇입니까? 컨테이너를 다시 빌드하면 ID와 볼륨 경로가 변경되므로 일치하는 추가 정보가 필요합니다. 실제로 모든 것을 복원하려면 백업해야 할 것이 있다면 무엇입니까?



답변

네가 옳아. 자체적으로 볼륨이있는 여러 컨테이너를 가질 수 있으므로 어떤 볼륨이 어떤 컨테이너에 해당하는지 추적해야합니다. 이를 수행하는 방법은 설정에 따라 다릅니다. 데이터 컨테이너에 이름 -data를 사용하므로 이미지가 속한 컨테이너가 분명합니다. 그렇게하면 다음과 같이 백업 할 수 있습니다.

VOLUME=`docker inspect $NAME-data | jq '.[0].Volumes["/path/in/container"]'`
tar -C $VOLUME . -czvf $NAME.tar.gz

이제 이미지를 다시 작성하고 데이터 컨테이너를 다시 작성하면됩니다.

cat $NAME.tar.gz | docker run -name $NAME-data -v /path/in/container \
                              -i busybox tar -C /path/int/container -xzf -

따라서 백업해야합니다.

  • 도커 파일
  • 음량
  • 컨테이너의 볼륨 경로
  • 볼륨이 속한 컨테이너의 이름

업데이트 : 컨테이너 및 해당 볼륨 (컨테이너)을 백업하는 도구를 만들었습니다 : https://github.com/discordianfish/docker-backup 및 백업을 생성하고 푸시 할 수있는 백업 이미지 s3 : https://github.com/discordianfish/docker-lloyd


답변

최신 Docker (에서 테스트 1.9.1, build 9894698)에서 cp명령을 사용할 수 있습니다 .

컨테이너에서 호스트로 디렉토리를 복사하는 방법의 예는 다음과 같습니다.

docker cp wordpress:/var/www/html backups/wordpress.`date +"%Y%m%d"`/

컨테이너에서 tar파일 로 디렉토리를 복사하는 방법의 예는 다음과 같습니다 .

docker cp wordpress:/var/www/html - > backups/wordpress.`date +"%Y%m%d"`.tar

컨테이너에서 tar.gz파일 로 디렉토리를 복사하는 방법에 대한 마지막 예는 다음과 같습니다.

docker cp wordpress:/var/www/html - | gzip > backups/wordpress.`date +"%Y%m%d"`.tar.gz


답변