도커 데몬 명령어 중 run 명령어에서 -v 옵션을 사용할 때는 호스트와 디렉터리를 공유하는 경우와 볼륨을 사용하는 경우에 대한 구분이 없음
스웜 모드에서는 서비스를 생성할 때 도커 볼륨을 사용할지, 호스트와 디렉터리를 공유할지를 명확하게 명시
volume 타입의 볼륨 생성
→ --mount 옵션의 type값에 volume을 지정 ⇒ 도커 볼륨을 사용하는 서비스를 생성
→ source ⇒ 사용할 볼륨 (도커 데몬에 해당 볼륨이 존재하면 해당 볼륨을 사용하고 없으면 새로 생성)
→ target ⇒ 컨테이너 내부에 마운트될 디렉터리 위치
srouce 옵션을 명시하지 않으면 임의의 16진수로 구성된 익명의 이름을 가진 볼륨을 생성
서비스의 컨테이너에서 볼륨에 공유할 컨테이너의 디렉터리에 파일이 이미 존재하면 이 파일들은 볼륨에 복사되고, 호스트에서 별도의 공간을 차지하게 됨
생성된 서비스, 컨테이너, 볼륨 삭제
서비스를 생성할 볼륨 옵션에 volume-nocopy를 추가하면 컨테이너의 파일들이 볼륨에 복사되지 않음
bind 타입의 볼륨 생성
바인드 타입은 호스트와 디렉터리를 공유할 때 사용
type 옵션의 값을 bind로 설정
볼륨 타입과 달리 공유될 호스트의 디렉터리를 설정해야 하므로 source 옵션을 반드시 명시해야 함
호스트의 /root/host 디렉터리를 서비스 컨테이너의 /root/container 디렉터리에 마운트
스웜 모드에서 볼륨의 한계점
서비스를 할당받을 수 있는 모든 노드가 볼륨 데이터를 가지고 있어야 하므로 스웜 클러스터에서 볼륨을 사용는 것은 어려움
⇒ 로컬 볼륨이 존재하지 않는 노드에는 컨테이너가 할당될 수 없음
일반적인 해법은 어느 노드에서도 접근 가능한 퍼시스턴트 스토리지(Persistent Storage)를 사용하는 것
퍼시스턴트 스토리지
⇒ 호스트와 컨테이너와 별개로 외부에 존재해 네트워크로 마운트할 수 있는 스토리지
⇒ 도커 자체가 제공하지 않으므로 서드파티 플러그인을 사용하거나 nfs, dfs 등을 별도로 구성해야 함
'컨테이너 > 도커' 카테고리의 다른 글
스웜을 이용한 실전 애플리케이션 개발 1 (0) | 2020.09.23 |
---|---|
07 도커 스웜 모드 노드 다루기 (0) | 2020.09.17 |
05 서비스 디스커버리 (0) | 2020.09.17 |
04 도커 스웜 네트워크 (0) | 2020.09.17 |
03 서비스 컨테이너에 설정 정보 전달 (0) | 2020.09.17 |
댓글