7.2 호스트 Volume을 데이터 Volume으로 마운트

컨테이너에 볼륨을 마운트하는 방법을 위에서 살펴보았습니다. 다음 단계는 볼륨 마운트와 동일한 방식의 프로세스를 살펴 보는 것입니다.

Docker 컨테이너에 기존 호스트 폴더를 마운트합니다. 이것은 흥미로운 개념입니다. 외부 폴더에 존재하는 파일을 수정하고 컨테이너와 다른 컨테이너간 볼륨을 공유할 경우에 매우 유용합니다.

저는 Docker for Mac을 사용하고 있기에, 이를 기반으로 설명할 예정입니다. 메뉴바의 Docker 아이콘을 클릭하여 Preferences를 들어가면 아래의 화면을 볼 수 있습니다.

Docker 컨테이너를 시작하는 동안 호스트 볼륨을 마운트하려면 volume -v 옵션을 사용해야 합니다.

-v host_folder : container_volumename

호스트 볼륨으로 사용할 폴더를 생성합니다.

grouq:~ giljae$ mkdir container_volume grouq:~ giljae$ cd container_volume/ grouq:container_volume giljae$ pwd /Users/giljae/container_volume

그리고 busybox 컨테이너를 시작하도록 하겠습니다.

grouq:container_volume giljae$ docker run -it --name container1 -v /Users/giljae/container_volume:/datavol busybox / #

위의 명령어는 호스트 폴더 /Users/giljae/container_volume 을 컨테이너(container1) 내부에 마운트 될 볼륨 /datavol에 매핑한 것입니다.

ls 명령어를 실행하여 /datavol이 마운트되어 있는지 확인합니다.

/ # ls bin dev home root tmp var datavol etc proc sys usr

/datavol로 이동해서 폴더 내용을 확인합니다.

/ # cd datavol /datavol # ls /datavol #

폴더내에 파일이 존재하지 않습니다. 호스트 폴더에서 파일을 하나 생성해보도록 합시다.

grouq:~ giljae$ cd container_volume/ grouq:container_volume giljae$ touch file.txt grouq:container_volume giljae$ ls file.txt grouq:container_volume giljae$

컨테이너(container1)에 매핑된 /datavol 폴더에 생성한 파일이 존재하는지 확인합니다.

/datavol # ls file.txt /datavol #

호스트 폴더에서 생성한 file.txt가 존재하는 것을 확인할 수 있습니다.

연습:

  1. 호스트 폴더 (/Users/<username>/container_volume)에 직접 파일을 추가 한 다음 실행중인 컨테이너에서 파일이 보이는지 확인하세요.

  2. 컨테이너의 shell에서 /datavol 폴더로 이동한 다음 파일을 추가하세요. 그리고 호스트 폴더에서 추가한 파일이 보이는지 확인하세요.

  3. 데이터 볼륨으로 마운트 된 호스트 폴더를 어떻게 사용할지 고민해보세요.

참고:

  • 데이터 볼륨으로 마운트 된 호스트 폴더를 활용하는 방법 중 하나는 예를 들어서 프로젝트를 수행중이고 컨테이너에서 Apache Web Server를 실행한다고 가정합니다.

  • 컨테이너를 시작하고 웹 서버가 사용할 수 있는 호스트 폴더를 마운트할 수 있습니다. 이 경우 호스트 컴퓨터에서 해당 폴더의 파일들을 변경하면 Docker 컨테이너에 바로 반영이 됩니다.