클라우드 + DevOps/Docker

Docker :: 컨테이너 마운트mount 개념과 실습

gamjadori 2024. 2. 27. 15:26
728x90

<마운트란?>

  • 도커 컨테이너와 호스트 시스템 간에 파일 또는 디렉터리를 공유하거나 볼륨을 연결하는 프로세스
  • 형식: docker container run -v /호스트/경로:/컨테이너/경로 이미지:태그

 

<Docker 실습 :: 마운트>

<실시간 데이터 공유를 확인할 폴더 생성>

  • ch06 폴더에 bind01 bind02 폴더를 생성 후,
  • 각 폴더 안에 docker-1.txt, docker-2.txt 파일 생성
  • docker-1.txt 내용: 2020401771103 docker-1 / docker-2.txt 내용: 2020401771103 docker-2
ubuntu@host1:~/Labs/ch06$ cat bind01/docker-1.txt
2020401771103 docker-1 >> 내용 확인
ubuntu@host1:~/Labs/ch06$ cat bind02/docker-2.txt
2020401771103 docker-2 >> 내용 확인

 

<컨테이너 마운트 설정>

  • v /home/ubuntu/Labs/ch06/bind01:/bind01:ro: 호스트의 "/home/ubuntu/Labs/ch06/bind01" 디렉터리를 컨테이너 내의 "/bind01" 경로에 읽기 전용으로 마운트
  • v ${PWD}/bind02:/bind02:rw: 호스트의 현재 작업 디렉터리에서 "bind02" 디렉터리를 컨테이너 내의 "/bind02" 경로에 읽기 및 쓰기 권한으로 마운트
ubuntu@host1:~/Labs/ch06$ docker container run -it --name=bind-mount -v /home/ubuntu/Labs/ch06/bind01:/bind01:ro -v ${PWD}/bind02:/bind02:rw ubuntu:14.04 bash

 

<마운트 상태 확인>

root@dbc1452e6563:/bind02# df -ha
Filesystem      Size  Used Avail Use% Mounted on
overlay          47G  3.3G   43G   8% /
proc               0     0     0    - /proc
tmpfs            64M     0   64M   0% /dev
devpts             0     0     0    - /dev/pts
sysfs              0     0     0    - /sys
cgroup             0     0     0    - /sys/fs/cgroup
mqueue             0     0     0    - /dev/mqueue
shm              64M     0   64M   0% /dev/shm
**/dev/sda1        30G   14G   17G  46% /bind01
/dev/sda1        30G   14G   17G  46% /bind02/docker-2.txt**
/dev/sdb2        47G  3.3G   43G   8% /etc/resolv.conf
/dev/sdb2        47G  3.3G   43G   8% /etc/hostname
/dev/sdb2        47G  3.3G   43G   8% /etc/hosts
devpts             0     0     0    - /dev/console
proc               0     0     0    - /proc/bus
proc               0     0     0    - /proc/fs
proc               0     0     0    - /proc/irq
proc               0     0     0    - /proc/sys
proc               0     0     0    - /proc/sysrq-trigger
tmpfs           2.0G     0  2.0G   0% /proc/acpi
tmpfs            64M     0   64M   0% /proc/kcore
tmpfs            64M     0   64M   0% /proc/keys
tmpfs            64M     0   64M   0% /proc/timer_list
tmpfs           2.0G     0  2.0G   0% /proc/scsi
tmpfs           2.0G     0  2.0G   0% /sys/firmware
>> **bind02/docker-2.txt / bind01 마운트 확인 가능**
ubuntu@host1:~/Labs/ch06$ docker container inspect -f"{{.HostConfig.Binds}}" bind-mount
[/home/ubuntu/Labs/ch01/bind01:/bind01:ro /home/ubuntu/Labs/ch06/bind02/docker-2.txt:/bind02/docker-2.txt:rw]
>> 마운트 상태 및 경로 확인
** 첫 번째: 읽기 전용으로 호스트의 "/home/ubuntu/Labs/ch01/bind01" 디렉터리를
컨테이너 내의 "/bind01" 경로에 마운트
** 두 번째: 읽기 및 쓰기 권한으로 
호스트의 "/home/ubuntu/Labs/ch06/bind02/docker-2.txt" 파일을
컨테이너 내의 "/bind02/docker-2.txt" 경로에 마운트

 

<첫 번째 마운트 설정 확인: 읽기 전용>

  • 마운트 내용 업데이트 확인
root@ac8136bf8bae:/# cat /bind01/docker-1.txt
2020401771103 docker-1
root@ac8136bf8bae:/# echo 'haha' >> bind01/docker-1.txt
bash: bind01/docker-1.txt: Read-only file system
root@ac8136bf8bae:/# cat /bind01/docker-1.txt
2020401771103 docker-1

>> bash: bind01/docker-1.txt: Read-only file system

읽기 전용으로 마운트했기 때문에, haha 라는 내용 업데이트가 안 됨.

 

<두 번째 마운트 설정 확인: 읽기 및 쓰기 전용>

  • 호스트의 bind02/docker-2.txt에 ‘hahah’ 내용 입력 후, 컨테이너에 업데이트가 되는지 확인
ubuntu@host1:~/Labs/ch06$ echo 'hahah' >> bind02/docker-2.txt
>> 해당 터미널은 호스트에 접속해 있음
root@d434fgdb794e:/bind02# cat docker-2.txt
2020401171103 docker-2
hahah < 호스트에서 작성한 내용
>> 해당 터미널은 컨테이너 안으로 접속해 있음