이전글



볼륨 컨테이너
도커 컨테이너1 그리고 컨테이너2 두 개의 컨테이너가 있다고 할 때 컨테이너2가 컨테이너1의 특정 디렉터리 및 파일을 마운트하여 공유할 수 있습니다. 이때 조건이 있는데, 컨테이너1은 호스트의 디렉터리를 docker run -v 옵션(또는 --volume 옵션)을 통해 공유하고 있는 상태여야 합니다.


즉 위와 같은 그림의 구조라고 볼 수 있습니다. 호스트의 /mysql_dir 디렉터리를 mysqldb 컨테이너를 생성할 당시에 공유하기 위해서 -v 옵션을 사용하여 /var/lib/mysql 디렉터리로 마운트합니다. 이때 mysqldb2 컨테이너를 생성하면서 이전에 이미 공유설정이 되어 있던 /var/lib/mysql 디렉터리를 그대로 마운트하여 공유하는 형태인 것입니다.

여기서 처음 만든 컨테이너인 mysqldb 컨테이너는 보통의 경우 호스트의 볼륨(디렉터리)만 공유하면서 실제로 특정 역할(서비스)를 수행하지 않는 중간 공유자 역할인 볼륨 컨테이너 로서 동작하게 되고 이후 생성된 mysqldb2 같은 여러 컨테이너로부터의 중간 다리 역할을 하게됩니다.

 

 


볼륨 컨테이너의 디렉터리 마운트하기
그럼 먼저 볼륨컨테이너에 해당하는 mysqldb 컨테이너를 생성하고, 볼륨 컨테이너의 공유 디렉터리를 마운트시킬 mysqldb2 컨테이너를 생성해 보도록 하겠습니다. 볼륨컨테이너를 생성할때 호스트 <> 컨테이너간의 공유에 관한 정보는 상단 이전글을 참조해 주세요.

먼저 docker run -v 옵션을 사용하여 호스트와 볼륨을 공유하는 볼륨 컨테이너를 하나 생성합니다.
# docker run -d \
--name mysqldb \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=proddb \
-v /home/mysql_dir:/var/lib/mysql \                                                            
mysql
cs


이렇게 되면 호스트의 /home/mysql_dir 디렉터리는 mysqldb 컨테이너의 /var/lib/mysql에 마운트 됩니다. 호스트에서 ls /home/mysql_dir 명령을 통해 디렉터리가 잘 공유되었는지 확인합니다.



실험을 위해 /home/mysql_dir 디렉터리에 텍스트 파일 하나를 생성합니다.
# touch /home/mysql_dir/test.txt
# echo 'test!!' >> /home/mysql_dir/test.txt                                                
cs

 

 

 


그리고 디렉터리를 공유중인  mysqldb 컨테이너에 접근합니다.
# docker exec -i -t mysqldb /bin/bash                                                    
cs

mysqldb 컨테이너에 접근하여 ls /var/lib/mysql/ 명령어를 실행하니 이전에 호스트에서 생성했던 test.txt 파일이 있습니다. 이로써 디렉터리가 잘 공유됨을 확인했습니다.



이번에는 mysqldb 컨테이너의 디렉터리를 공유시킬 또다른 컨테이너 mysqldb2를 생성합니다. 이때 -v 옵션이 아닌 --volumes-from [볼륨 컨테이너명] 옵션을 사용합니다. mysqldb 컨테이너를 볼륨 컨테이너로 지정합니다.
# docker run -d \                                                                        
--name mysqldb2 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=proddb \
--volumes-from mysqldb \
mysql
cs


이번엔 방금 생성한 mysqldb2에 접근합니다.
# docker exec -i -t mysqldb2 /bin/bash                                                    
cs

역시 똑같이 ls /var/lib/mysql/ 명령어로 확인해보면 mysqldb 컨테이너와 똑같은 경로로 디렉터리를 마운트하여 공유하고 있는것을 알 수 있습니다.



다음글
블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,