,

찾아보게 된 계기

rclone을 독커로 사용해보고 싶었습니다.
docker 컨테이너는 docker만 설치되면 모든 기기에서 사용할 수 있게 해줍니다.
그런데 rclone 컨테이너를 독커로 구동하지 않으면 당연히 다른 기기에서는 사용할 수 없게 되죠.
rclone까지 컨테이너로 만들 필요가 있었습니다

그러면 컨테이너에서 마운트한 볼륨을 host에서 접근할 수 있어야 합니다.
그래서 찾아보았고 docker는 당연히 이런 기능을 제공하고 있었습니다.

Configure bind propagation

옵션 설명의 용어 설명

독커의 환경이 아래와 같다고 가정해봅시다.

컨테이너 볼륨 옵션이 이렇게 설정되어있습니다.
-v /hostmount:/client-mount
/hostmount와 client-mount는 대상입니다.

호스트 컴퓨터에는 다음과 같은 폴더에 서로 다른 장치가 마운트 되어있습니다.
(폴더 구조가 아닙니다. 마운트 구조입니다.)
/hostmount (dev1)
  |-host-sub-mount1 (dev2)
  |-host-sub-mount2 (dev3)
    |-host-nested-mount (dev4)

컨테이너에는 아래와 같이 마운트 되어있습니다.
(폴더 구조가 아닙니다. 마운트 구조입니다.)
/client-mount (dev1)
  |-client-sub-mount1 (dev5)
  |-client-sub-mount2 (dev6)
    |-client-nested-mount (dev7)

이 때 dev5 ~ dev7은 호스트에는 마운트되지 않고, 독커에만 마운트 된 파일 시스템입니다.
rclone과 같은 vfs로 마운트 된 파일 시스템이라고 볼수 있습니다.

이런 Configure bind propagation에서 말하는 용어를 번역해드리겠습니다.

original mount point는 위 예시에서 hostmount를 의미합니다.
replica mount는 위 예시에서 clientmount 마운트를 의미합니다.

sub-mount는 original mountreplica mount의 바로 아래에 있는 마운트를 의미합니다.
위 예시에서는 host-sub-mount1host-sub-mount2client-sub-mount1client-sub-mount2가 이에 해당합니다.

mount points nested는 중첩 마운트라고 번역 되는데, recursive 마운트를 의미합니다.
sub-mount 아래에 있는 마운트까지 포함됩니다.
host-nested-mountclient-nested-mount가 해당됩니다.

bind propagation: shared

original mount의 sub mount가 replica mount에서 보이며, replica mount가 original mount에서 보입니다.

host에서는 마운트 구조가 아래와 같아집니다.

/hostmount 
  |-host-sub-mount1
  |-host-sub-mount2
  |-client-sub-mount1
  |-client-sub-mount2

container에서는 아래와 같은 마운트 구조를 가집니다.

/client-mount
  |-host-sub-mount1
  |-host-sub-mount2
  |-client-sub-mount1
  |-client-sub-mount2
bind propagation: slave

단방향으로 마운트가 공유됩니다.
host의 마운트만 컨테이너로 공유됩니다.

host에서는 마운트 구조가 아래와 같아집니다.

/hostmount
  |-host-sub-mount1
  |-host-sub-mount2

container에서는 아래와 같은 마운트 구조를 가집니다.

/client-mount
  |-host-sub-mount1
  |-host-sub-mount2
  |-client-sub-mount1
  |-client-sub-mount2
bind propagation: private

서로 하위 마운트와 중첩 마운트를 볼수 없습니다.

host에서는 마운트 구조가 아래와 같아집니다.

/hostmount
  |-host-sub-mount1
  |-host-sub-mount2

container에서는 아래와 같은 마운트 구조를 가집니다.

/client-mount
  |-client-sub-mount1
  |-client-sub-mount2
bind propagation: rshared

shared와 비슷하나 recursive하게 작동합니다.
하위와 하위의 하위와 하위의 하위의 하위의….
끝까지 작동합니다.

host에서는 마운트 구조가 아래와 같아집니다.

/hostmount
  |-host-sub-mount1
  |-host-sub-mount2
    |-host-nested-mount
  |-client-sub-mount1
  |-client-sub-mount2
    |-client-nested-mount

container에서는 아래와 같은 마운트 구조를 가집니다.

/client-mount
  |-host-sub-mount1
  |-host-sub-mount2
    |-host-nested-mount
  |-client-sub-mount1
  |-client-sub-mount2
    |-client-nested-mount
bind propagation: rslave

역시 recursive하게 작동하며 host -> container 단방향으로 작동합니다

host에서는 마운트 구조가 아래와 같아집니다.

/hostmount
  |-host-sub-mount1
  |-host-sub-mount2
    |-host-nested-mount

container에서는 아래와 같은 마운트 구조를 가집니다.

/client-mount
  |-host-sub-mount1
  |-host-sub-mount2
    |-host-nested-mount
  |-client-sub-mount1
  |-client-sub-mount2
    |-client-nested-mount
bind propagation: rprivate

기본값입니다.
마운트 된 공간만 공유됩니다.

host에서는 마운트 구조가 아래와 같아집니다.

/hostmount
  |-host-sub-mount1
  |-host-sub-mount2
    |-host-nested-mount

container에서는 아래와 같은 마운트 구조를 가집니다.

/client-mount
  |-client-sub-mount1
  |-client-sub-mount2
    |-client-nested-mount

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


Ads Blocker Image Powered by Code Help Pro

광고 차단 감지됨!

닫기를 누르면 이용하실 수 있지만, 광고 차단은 해제해주시면 좋겠습니다.
Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock