본문 바로가기
컨테이너/도커

06 스웜 모드 볼륨

by ^..^v 2020. 9. 17.
728x90
반응형

도커 데몬 명령어 중 run 명령어에서 -v 옵션을 사용할 때는 호스트와 디렉터리를 공유하는 경우와 볼륨을 사용하는 경우에 대한 구분이 없음

스웜 모드에서는 서비스를 생성할 때 도커 볼륨을 사용할지, 호스트와 디렉터리를 공유할지를 명확하게 명시

 

volume 타입의 볼륨 생성

 

→ --mount 옵션의 type값에 volume을 지정 ⇒ 도커 볼륨을 사용하는 서비스를 생성

→ source ⇒ 사용할 볼륨 (도커 데몬에 해당 볼륨이 존재하면 해당 볼륨을 사용하고 없으면 새로 생성)

→ target ⇒ 컨테이너 내부에 마운트될 디렉터리 위치



srouce 옵션을 명시하지 않으면 임의의 16진수로 구성된 익명의 이름을 가진 볼륨을 생성          



서비스의 컨테이너에서 볼륨에 공유할 컨테이너의 디렉터리에 파일이 이미 존재하면 이 파일들은 볼륨에 복사되고, 호스트에서 별도의 공간을 차지하게 됨



생성된 서비스, 컨테이너, 볼륨 삭제



서비스를 생성할 볼륨 옵션에 volume-nocopy를 추가하면 컨테이너의 파일들이 볼륨에 복사되지 않음



bind 타입의 볼륨 생성

바인드 타입은 호스트와 디렉터리를 공유할 때 사용

type 옵션의 값을 bind로 설정

볼륨 타입과 달리 공유될 호스트의 디렉터리를 설정해야 하므로 source 옵션을 반드시 명시해야 함



호스트의 /root/host 디렉터리를 서비스 컨테이너의 /root/container 디렉터리에 마운트



스웜 모드에서 볼륨의 한계점

서비스를 할당받을 수 있는 모든 노드가 볼륨 데이터를 가지고 있어야 하므로 스웜 클러스터에서 볼륨을 사용는 것은 어려움

⇒ 로컬 볼륨이 존재하지 않는 노드에는 컨테이너가 할당될 수 없음

 

일반적인 해법은 어느 노드에서도 접근 가능한 퍼시스턴트 스토리지(Persistent Storage)를 사용하는 것

 

퍼시스턴트 스토리지

⇒ 호스트와 컨테이너와 별개로 외부에 존재해 네트워크로 마운트할 수 있는 스토리지

⇒ 도커 자체가 제공하지 않으므로 서드파티 플러그인을 사용하거나 nfs, dfs 등을 별도로 구성해야 함

 

728x90
반응형

댓글