770 권한을 가진 루트가 소유한 디렉터리를 바인드 마운트하려고 합니다. 내 사용자는 호스트에서 액세스(읽기, 쓰기, 실행)할 수 있는 권한이 있는 그룹에 속해 있지만 소유권 그룹은 내 사용자의 기본 그룹이 아닙니다. 그러나 루트 없는 Docker에서 실행되는 컨테이너에 디렉터리를 바인드 마운트하려고 하면 해당 디렉터리에 액세스할 수 없습니다.
디렉터리의 그룹 소유권을 사용자의 기본 그룹으로 설정하면 루트 없는 Docker에서 액세스할 수 있습니다.
기본이 아닌 그룹에서 이러한 디렉터리에 액세스할 수 있는 방법이 있습니까?
예를 들어 호스트에 있는 다음과 같은 디렉터리의 경우:
drwxrwx--- 2 root non-primary-group test-directory
$ id
uid=101(example-user) gid=101(primary-group) groups=101(primary-group),102(non-primary-group)
실행할 때 거부됩니다.
$ docker run --rm -it -v ./test-directory:/test-directory ubuntu
root@1d84f2dsgdsf: # cd /test-directory
bash: cd: test-directory/: Permission denied
그러나 디렉토리 소유권이 다음과 같은 경우:
drwxrwx--- 2 root primary-group test-directory
그러면 모든 것이 잘 작동합니다.
답변1
다른 경험에 따르면 이는 "루트 없는" Docker 버전에서 예상되는 상황인 것 같습니다.
컨테이너 외부에 있는 것이 있더라도 루트 없는 Docker는 항상 컨테이너 내부에서 바인드 마운트를 사용 user:user
하는 것 같습니다 .root:root
원천:
https://forums.docker.com/t/bind-mounting-permissions-with-user-broken-using-rootless-docker/88257
https://forums.docker.com/t/bind-mount-permissions-unexpected-mounting-as-root-root/129328/6
https://docs.docker.com/engine/security/userns-remap/
이러한 추가 복잡성이 더 이상 워크플로와 호환되지 않는 경우 결국 "레거시" Docker로 롤백하는 것을 고려할 수도 있습니다. 예를 들어 "루트 없는" Docker를 제거한 다음 기존 Docker를 설치합니다.