code

실행중인 Docker 컨테이너를 백업 하시겠습니까?

codestyles 2020. 12. 13. 09:33
반응형

실행중인 Docker 컨테이너를 백업 하시겠습니까?


실행중인 Docker 컨테이너를 백업 할 수 있습니까? 는 IS export명령은 그 일에 적합?


한 친구가 댓글에 게시

안녕하세요 Slava, 귀하의 질문이 닫혀서 죄송합니다. 기록을 위해 Slava는 Linux 컨테이너 용 런타임 인 ​​docker.io에 대해 이야기하고 있습니다. 예, docker export적절한 접근 방식입니다. 전체 컨테이너 파일 시스템 상태의 tarball을 생성하고 stdout에 덤프합니다. 그래서

docker export $CONTAINER_ID > $CONTAINER_ID-backup.tar

사용 가능한 타르볼이 생성됩니다. 다음을 사용하여 tarball을 다시 가져올 수 있습니다.

docker import - slava/$CONTAINER_ID-backup < $CONTAINER_ID-backup.tar

원본 메타 데이터 (예 : 원본 이미지의 ID)는 손실됩니다. 이는 향후 버전의 docker에서 수정되어야합니다. Solomon Hykes 2013-04-02 06:35

여기에 추가하면 요약에서 질문에 대한 답변을 찾을 수 있습니다. 감사합니다 솔로몬!


export몇 가지 제한 사항이 있습니다. 데이터 볼륨을 내 보내지 않습니다 .

데이터 양은 다음을 의미합니다.

  1. 있다 VOLUME이미지의 Dockerfile에 정의.
  2. 컨테이너는 다음과 같은 매개 변수로 시작됩니다. -v /webapp

데이터에 대한 추가 정보 : https://docs.docker.com/userguide/dockervolumes/

이 상황을 처리하는 방법은 ' --volumes-from '매개 변수로 새 컨테이너를 시작하여 해당 컨테이너에 연결하므로 데이터 볼륨을 방문 할 수 있습니다.

예 :

  1. 데이터 방문 : (bash에서)

docker run -it --volumes-from target_container ubuntu bash

  1. 호스트로 백업 : (postgres 컨테이너)

docker run -it --volumes-from some_postgres -v /host/path:/container/path --rm ubuntu bash -c "tar -cvf /container/path/postgres-backup.tar /var/lib/postgresql/data"


docker commit컨테이너를 백업하는 데 선호하는 방법은를 사용하는 것 입니다 (시작 또는 중지됨). 다음과 같이 이름을 지정할 수있는 이미지를 만듭니다.

docker commit - p <container_id> <backup-name>

저장 및로드를 사용할 수도 있습니다. 여기에 샘플이 있습니다.

  1. sudo docker images

    awan@google-dev:~/StarCenter/_docker$ sudo docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    google_star/_version_1.10           latest              1067d6689697b2        4 days ago          1.666 GB
    
  2. sudo docker save google_star/_version_1.10 > my_docker-backup.tgz

  3. ( sudo docker load < my_docker-backup.tgz)를 사용하여 복원

  4. sudo docker images새 도커 머신에서 사용하여 이미지 확인

참고 URL : https://stackoverflow.com/questions/15700943/backup-a-running-docker-container

반응형