본문 바로가기
클라우드 컴퓨팅/Docker

도커 응용 명령어 - 복사, 스토리지 마운트, 백업

by 안드레날린 2022. 5. 29.

컨테이너와 호스트 간에 파일 복사

파일 복사는 호스트 > 컨테이너, 컨테이너 > 호스트로 양방향 모두 가능하다.

docker cp (docker container cp) 명령어를 이용한다.

 

호스트 > 컨테이너

docker cp 호스트_경로 컨테이너_이름:컨테이너_경로

docker cp /home/ahndrenaline/index.html cntr-httpd:/usr/local/apache2/htdocs/
docker cp C:\Users\ahndrenaline\index.html cntr-httpd:/usr/local/apache2/htdocs/

 

컨테이너 > 호스트

docker cp 컨테이너_이름:컨테이너_경로 호스트_경로

docker cp cntr-httpd:/usr/local/apache2/htdocs/index.html /home/ahndrenaline/
docker cp cntr-httpd:/usr/local/apache2/htdocs/index.html C:\Users\ahndrenaline\

 

 

컨테이너와 호스트 간에 스토리지 마운트

컨테이너를 종료한다고 해서 컨테이너 속의 데이터가 삭제되지는 않지만 컨테이너가 소멸되면 컨테이너 속의 데이터 역시 소멸된다. 어떠한 이유이던 간에 컨테이너가 소멸되어도 소멸되지 말아야 하는 데이터는 호스트에 마운트 하여 보관한다.

 

스토리지의 마운트는 볼륨 마운트와 바인드 마운트 두 가지 종류가 있다.

스토리지가 아닌 임시 메모리(tmpfs)를 마운트 하는 방식도 있다.

 

바인드 마운트

도커 엔진의 관리하에 있지 않다. 간단하게 디렉토리나 파일을 마운트 할 수 있다.

-v 스토리지_경로:컨테이너_마운트_경로

-v /home/ahndrenaline/httpd_folder:/usr/local/apache2/htdocs
-v C:\Users\ahndrenaline\httpd_folder:/usr/local/apache2/htdocs

docker run --name cntr-httpd -dit -p 80:80 -v /home/ahndrenaline/httpd_folder:/usr/local/apache2/htdocs httpd

 

볼륨 마운트

도커 엔진의 관리하에 있다. 볼륨을 생성한 후 마운트 할 수 있으며, 도커 제작사가 권고하는 마운트 방법이다.

 

도커 볼륨 명령어

docker volume create

docker volume inspect

docker volume ls

docker volume prune

docker volume rm

 

-v 볼륨_이름:컨테이너_경로

docker volume create vol-httpd

docker volume inspect vol-httpd
[
    {
        "CreatedAt": "2022-05-30T16:14:20Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/vol-httpd/_data",
        "Name": "vol-httpd",
        "Options": {},
        "Scope": "local"
    }
]

docker run --name cntr-httpd -dit -p 80:80 -v vol-httpd:/usr/local/apache2/htdocs httpd

docker container inspect cntr-httpd
...생략...
        "Mounts": [
            {
                "Type": "volume",
                "Name": "vol-httpd",
                "Source": "/var/lib/docker/volumes/vol-httpd/_data",
                "Destination": "/usr/local/apache2/htdocs",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
...생략...

 

 

백업

바인드 마운트 백업

컨테이너와 호스트 간에 연결된 디렉토리 및 파일을 단순히 복사하는 것으로 간단하게 백업을 할 수 있다.

 

볼륨 백업

볼륨 자체를 복사할 수 없으므로 별도의 컨테이너를 연결해서 볼륨의 내용을 백업 한다.

# 주 컨테이너 생성
docker volume create vol-httpd
docker run --name cntr-httpd -dit -p 80:80 -v vol-httpd:/usr/local/apache2/htdocs httpd
docker container stop cntr-httpd

# 백업 컨테이너 생성 및 볼륨 마운트
docker run --name cntr-backup -dit -v vol-httpd:/backup busybox

# 백업 컨테이너에서 압축 명령어 실행
docker exec -it cntr-backup tar -cvf backup.tar backup
backup/
backup/index.html

# 백업 컨테이너에서 호스트로 백업 파일 복사
docker cp cntr-backup:backup.tar .