컨테이너 안에서 plexdrive나 rclone mount와 같이 unionfs/mergerfs 등 fuse mount 관련 커맨드를 마운트 포인트 /data로 수행했다고 가정합니다. 이제 컨테이너 안에서는 마운트 한 내용이 /data에서 잘 보입니다.
컨테이너 안에서만 쓸거면 모르지만 다른 컨테이너와 데이터를 주고 받거나 (예를 들면 docker-plexdrive를 올리고 그 폴더에 대해서 docker-plex를 올린다거나) 호스트에서 가져다 쓰려면 shared mount가 필요합니다.
docker run -d \ --name=test_cont \ ... \ -v /path/on/host:/data:shared \ ... \ owner/repo:tag
마지막에 :shared라고 명시해주면 컨테이너 내부의 /data에 마운트한 내용이 호스트의 /path/on/host에서도 잘 보입니다.
시놀로지나 맥에서는 이게 잘 안되는걸로 아는데 (shared를 붙이면 에러나죠)
sudo mount --make-shared /volume1
이런식으로 /volume1 아래의 서브트리에 대해서 shared로 만들어주면 됩니다. 저 폴더는 사용자에 따라 /volum2가 될 수도 있고 /mnt가 될 수도 있고 그러합니다.
그런 다음 -v /path/on/host:/data:shared가 적용된 컨테이너를 올려보면 잘 돌아갈겁니다.
문제는 이게 재부팅하면 다시 해줘야하네요.
아마 fstab 같은데서 처음 마운트될때 옵션을 줘야하는 것 같은데 더이상 건드리기는 위험해 보여서...
혹시 아시는 분은 제보 부탁합니다.
p.s. 시놀 도커 패키지 수정버전 올라왔네요.
일단 sudo 명령이 없는데 그냥 루트로 로그인해서 mount --make-shared 명령 실행하면 사용중이라고 에러메세지가 나옵니다. umount도 사용중이라며 안되고.. 방법이 있을까요?
자답입니다.
위의 명령 대신에
mount -o shared /volume1
명령을 사용하니 되네요.
추가
mount -o shared 명령은 실행 되지만 여전히 도커에서 -v /host:/container:shared 명령으로 실행하면 에러가 나네요.
문제는 마운트한 폴더 조회는 가능한데 수정 권한이 없다고 나옵니다. 마운트한 폴더에 영화를 추가하면 rw 가능한 폴더에 해당 영화가 복사되고, 그 폴더를 나중에 rclone으로 업로드하려는 계획인데.. 잘 안됩니다.
첨부한 그림에서 Media 폴더가 제가 마운트한 것이고, 아랫 부분은 마운트 해제했을때 파일 권한 변화 모습입니다.
컨테이너 생성할때 다른 명령어를 주어야 하나요? 제가 사용한 명령은 다음과 같습니다.
docker run -d --name=plexdrive --restart=always --privileged --net=bridge -v /volume1/docker/plexdrive/config:/config -v /volume1/GoogleDrive/Media:/data:shared -v /volume2/Media:/ufs --device=/dev/fuse --cap-add=MKNOD --cap-add=SYS_ADMIN -e PUID=1026 -e PGID=100 -e RUN_OPTS="--chunk-check-threads=8 --chunk-load-ahead=16 --chunk-load-threads=16 --max-chunks=512 --chunk-size=1M --refresh-interval=1m" wiserain/plexdrive:5.0.0-unionfs
/volume1/GoogleDrive/Media = /volume2/Media + /plexdrive
/volume2/Media는 읽고쓰기가능 plexdrive는 읽기전용입니다. 어느 폴더에 수정권한이 없다고 나오고 뭐가 어떻게 안된다는 것인지 모르겠습니다.
b=/volume2/Media:rw
ab(union)=/volume1/GoogleDrive/Media
저는 ab 폴더에 파일을 카피하면 rw인 b폴더에 실제 파일이 카피되는 걸로 알고 있었습니다.
그래서 ab를 플렉스 라이브러리로 등록하고 영화를 추가하기 위해 ab에 영화를 카피하고자 하였습니다.
그런데 카피가 되지 않고 오류가 발생해서 ab에 대한 퍼미션을 확인해보니 위의 그림과 같았고 이 상태로는 ab에 카피가 되지 않을거라 판단하였습니다.
그래서 b에다 영화를 카피하면 ab에 반영되고 플렉스 서버에서 영화가 추가되지 않을까 하여 b에 영화를 카피했습니다. 결론적으로는 ab에도 영화 추가 반영되었으나 플렉스 서버에서는 영화가 자동으로 추가되지 않았고 수동으로 업데이트 해야 인식되었습니다.
개인적으로는 ab에 영화 카피가 된다면 플렉스 서버에서 영화가 등록될 때 라이브러리 추가가 자동적으로 되지 않을까 하는 생각이 들어서 ab에 카피 가능하도록 퍼미션 수정 방법을 찾고 있는 상황입니다.
plexdrive 컨테이너 실행시 제 id 검색해서 -e PUID=1026 -e PGID=100을 줬는데 이게 문제이려나요.