[Docker] volume

1. 도커 볼륨이란?

컨테이너가 삭제되면 컨테이너 레이어도 함께 삭제되어 다른 프로세스나 컨테이너가 해당 데이터를 필요로 하는 경우 사용할 수 없게 된다.

도커 볼륨은 호스트의 파일시스템을 컨테이너에 마운트시켜 컨테이너가 삭제되어도 데이터는 남아있게 한다.

2. docker volume 명령어

run할 때 -v 옵션을 주어 컨테이너 생성시에 bind mounts 생성이 가능하지만 호스트의 파일시스템 디렉토리 구조에 의존적이다.

$ docker container run -v /tmp/hostdir:/container_dir:ro --name teste centos

인자에 컨테이너에서 마운트포인트만 명시하면 /var/lib/docker/volumes 에 무작위 16진수로 된 디렉토리가 생겨 이걸 마운트한다.

$ docker inspect test | grep -A 10 "Mounts"
        "Mounts": [
            {
                "Type": "volume",
                "Name": "adf2a33dae1232afebda928df27f291ecb664d2e160a9da2968922bd3f73ccce",
                "Source": "/var/lib/docker/volumes/adf2a33dae1232afebda928df27f291ecb664d2e160a9da2968922bd3f73ccce/_data",
                "Destination": "/container_dir",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }

docker volume 을 사용하면 호스트에 물리적으로 연결되어있는 파일시스템에 마운트 가능하며, NFS와 같이 공유된 파일시스템에 마운트하는 것도 가능하다. 볼륨을 어떤 컨테이너가 사용하는지, 어떻게 마운트 되는지 관리하기 용이하다.

도커 볼륨파일은 /var/lib/docker/volumes 에 위치한다.

# 도커 볼륨 생성
$ docker volume create testvol
$ docker volume ls
DRIVER    VOLUME NAME
local     testvol

$ echo "Hello" > /var/lib/docker/volumes/testvol/_data/f1

$ docker run -it -v testvol:/container --name=test00 centos
[root@93adbdb9e03f /]# cat /container/f1
Hello

--volumes-from 옵션을 사용하면 다른 컨테이너에서 사용하는 볼륨을 동일하게 사용할 수 있다.

$ docker run -it --volumes-from test00 --name test01 centos
[root@9774cc3bda9a /]# ls /container/
f1

카테고리:

업데이트:

댓글남기기