Skip to main content

06D. Docker 데이터 볼륨 사용하기

About 1 minDevOpsDockercrashcoursepyrasis.comdockerdevops

06D. Docker 데이터 볼륨 사용하기 관련

목차

언제나 최신 Docker

6장 - 4. Docker 데이터 볼륨 사용하기
언제나 최신 Docker

Docker 데이터 볼륨은 데이터를 컨테이너가 아닌 호스트에 저장하는 방식입니다. 따라서 데이터볼륨은 컨테이너끼리 데이터를 공유할 때 활용할 수 있습니다.

Docker 컨테이너 안의 파일 변경 사항은 Union File System에 의해 관리됩니다. 하지만 데이터 볼륨은 Union File System을 통하지 않고 바로 호스트에 저장됩니다. 따라서 docker commit 명령을 통해 이미지로 생성해도 데이터 볼륨의 변경 사항은 이미지에 포함되지 않습니다.

Docker 데이터 볼륨
Docker 데이터 볼륨

다음 명령을 입력하면 컨테이너 안의 /data 디렉터리가 데이터 볼륨으로 설정됩니다. 컨테이너의 Bash 셸이 실행되면 /data 디렉터리로 이동한 뒤 hello라는 빈 파일을 생성합니다. 그리고 exit를 입력하여 Bash 셸에서 빠져나옵니다.

sudo docker run -i -t --name hello-volume -v /data ubuntu /bin/bash
cd /data/
touch hello
exit

데이터 볼륨 옵션은 -v <컨테이너 디렉터리> 형식입니다.

docker inspect 명령으로 hello-volume 컨테이너의 데이터 볼륨 경로를 확인합니다.

sudo docker inspect -f "{{ .Mounts }}" hello-volume
# 
# [{volume ebf7f26c7875a77fb7dbb743efa55d9da5f29dbb7d9ef77307b696223dab81f9 /var/lib/docker/volumes/ebf7f26c7875a77fb7dbb743efa55d9da5f29dbb7d9ef77307b696223dab81f9/_data /data local  true }]

ls 명령으로 앞에서 알아낸 디렉터리(/var/lib/docker/vfs/dir/xxxx)안의 파일 목록을 출력합니다. 이 디렉터리는 컨테이너를 생성할 때마다 함께 생성됩니다.

sudo ls /var/lib/docker/volumes/ebf7f26c7875a77fb7dbb743efa55d9da5f29dbb7d9ef77307b696223dab81f9/_data
# 
# hello

앞에서 생성한 hello 파일이 보입니다. 이 디렉터리에 파일을 생성하면 컨테이너 안에서도 사용할 수 있습니다.

이번에는 데이터 볼륨을 사용하여 컨테이너끼리 데이터를 공유해보겠습니다.

Docker 데이터 볼륨으로 데이터 공유
Docker 데이터 볼륨으로 데이터 공유

다음 명령을 실행하여 컨테이너를 생성하고 데이터 볼륨을 설정합니다. 컨테이너의 Bash 셸이 실행되면 /data 디렉터리로 이동한 뒤 world라는 빈 파일을 생성합니다. 그리고 exit를 입력하여 Bash 셸에서 빠져나옵니다.

sudo docker run -i -t --name hello-volume1 -v /root/data:/data ubuntu /bin/bash
cd /data
touch world
exit

데이터 볼륨 옵션은 -v <호스트 디렉터리>:<컨테이너 디렉터리> 형식입니다. 여기서는 호스트의 /root/data 디렉터리를 Docker 컨테이너의 /data 디렉터리에 연결합니다.

./root/data 디렉터리의 파일 목록을 출력합니다.

sudo ls /root/data
# 
# world

앞에서 생성한 world 파일이 보입니다.

이제 두 번째 컨테이너를 생성합니다. 컨테이너의 Bash 셸이 실행되면 /data 디렉터리의 파일 목록을 출력합니다.

sudo docker run -i -t --name hello-volume2 -v /root/data:/data ubuntu /bin/bash
ls /data
# 
# world

앞에서 생성한 world 파일이 hello-volume2 파일에서도 보입니다. /data 디렉터리에 파일을 생성하면 호스트 및 hello-volume1 컨테이너에서도 사용할 수 있습니다. 이렇게 데이터 볼륨 설정을 통해 컨테이너끼리 데이터를 공유할 수 있습니다.


이찬희 (MarkiiimarK)
Never Stop Learning.