Docker 데이터 전용 컨테이너를 이용한 백업 및 복구

Docker에서 데이터 전용 컨테이너를 만들 수 있습니다.
본 투고에서 아래 그림과 같이 데이터의 운반성을 높이기 위해 데이터 전용 용기를 이용하여 다음과 같은 처리를 실현한다.

구현할 프로세스 및 이미지



처리하다.

  • 일반 용기 c0004에서 데이터 용기 d0001을 참조한 파일
  • d0001 파일을 호스트 OS에 백업
  • 목록 컨테이너 c0005로 호스트 OS에서 백업된 파일에서 복구
  • 1. 버스박스 이미지 획득


    Docker에서 데이터 전용 컨테이너를 만들려면 일반 OS 이미지 대신 busybox 이미지를 사용합니다.
    busybox는 항상 최소한의 케이스 환경을 제공하는 데 사용된다.
    shell
    $ docker image pull busybox:latest
    latest: Pulling from library/busybox
    53071b97a884: Pull complete
    Digest: sha256:4b6ad3a68d34da29bf7c8ccb5d355ba8b4babcad1f99798204e7abb43e54ee3d
    Status: Downloaded newer image for busybox:latest
    

    2. 데이터 전용 용기의 생성


    busybox의 이미지를 이용하여 데이터 전용 용기 d0001을 생성합니다.
    shell
    $ docker container run -it -v /data0001 --name d0001 busybox /bin/sh
    / # pwd
    /
    / #
    

    3. 테스트 파일 만들기


    d001 용기의/data0001/디렉터리 아래에 테스트 파일을 만듭니다.
    shell
    $ docker attach d0001
    / # ls -a /data0001/
    .   ..
    / # echo "Hello data container" > /data0001/datafile01.txt
    / # cat /data0001/datafile01.txt
    Hello data container
    / #
    

    4. 다른 컨테이너에서 테스트 파일 참조


    centos7.5 그림에서 생성된 일반 용기에서 데이터 전용 용기 d0001의 테스트 파일을 참조할 수 있는지 확인합니다.
    shell
    $ docker container run -it --volumes-from d0001 --name c0004 -h 0004 centos:7.5.1804 /bin/bash
    [root@0004 /]# cat /data0001/datafile01.txt
    Hello data container
    [root@0004 /]#
    

    5. 데이터 전용 용기를 이용하여 음량 백업


    busybox와 tar 명령을 조합하면 호스트 OS에서 데이터 전용 용기에 저장된 데이터를 백업할 수 있습니다.
    다음은 위 3단계에서 생성한 테스트 파일을 백업으로 호스트 OS 디렉토리에 저장한 백업 실행 명령의 예입니다.
    run-rm 명령을 사용하여 컨테이너를 부팅하면 호스트 OS의 백업이 완료되면 컨테이너가 자동으로 삭제됩니다.
    shell
    $ mkdir hostdir
    $ docker container run --rm --volumes-from d0001 -v /${host-os-dir}/hostdir:/ctdir busybox:latest tar cvf /ctdir/backup.tar /data0001
    tar: removing leading '/' from member names
    data0001/
    data0001/datafile01.txt
    $ ls hostdir  # ホストOS上にバックアップとして保存されているのを確認します。
    backup.tar
    $ tar tf hostdir/backup.tar
    data0001/
    data0001/datafile01.txt
    

    6. 호스트 OS에서 백업한 데이터를 다른 컨테이너에 다시 로드


    5단계에 따라 호스트 OS에서 백업한 데이터를 다른 컨테이너로 복원합니다.

    컨테이너의 생성


    shell
    $ docker container run -it -v /data0001 --name c0005 -h c0005 centos:7.5.1804 /bin/bash
    [root@c0005 /]# ls -l /data0001/
    total 0
    [root@c0005 /]#
    $ docker container run -it -v /data --name c0005 -h c0005 centos:7.5.1804 /bin/bash
    

    재시작 실행 및 확인


    shell
    $ docker container run --rm --volumes-from c0005 -v /${host-os-dir}/hostdir:/ctdir busybox:latest tar xvf /ctdir/backup.tar -C /
    data0001/
    data0001/datafile01.txt
    $ docker container attach c0005
    [root@c0005 /]# cat /data0001/datafile01.txt
    Hello data container
    [root@c0005 /]#
    

    참고 문헌


    고하정순,'Docker 실천지침 제2판', pp.12-117(2019).
  • busybox _ Docker Documentation, https://docs.docker.com/samples/library/busybox/ , Online; accessed 8-June-2019.
  • 좋은 웹페이지 즐겨찾기