이것은 Docker와 관련이 없으며 기본적인 Unix 파일 권한과 관련이 있습니다. 도커 컨테이너는 root
으로 실행됩니다. 즉, 컨테이너에서 생성 된 모든 파일은 호스트의 root
이 소유합니다. 이 문제는 다른 파일 사용 권한 문제를 해결하는 방법으로 해결됩니다. (a) 파일/디렉토리가 사용자 ID로 생성되도록하거나 (b) 권한이 파일을 삭제하지 않도록 할 수 있습니다 (c) 높은 권한 (예 : sudo rm ...
)을 사용하여 파일을 삭제할 수 있습니다.
무엇을하고 있느냐에 따라 옵션 (a)을 쉽게 할 수 있습니다. 루트가 아닌 사용자로 contanier, 예컨대을 실행할 수있는 경우 :
docker run -u $UID -v $HOME/output:/some/container/path ...
... 다음 모든 것 그냥 일, 파일이 사용자 ID로 생성되기 때문에.
컨테이너가 처음 root
로 실행해야하는 경우, 당신은 당신의 ENTRYPOINT
또는 CMD
스크립트 root
행동을 돌봐하고 주요 응용 프로그램을 실행하기 위해 다른 UID로 전환 할 수 있습니다. 이렇게하려면, 당신은 (환경 변수로, 예를 들어) 컨테이너에 사용자 ID를 전달해야하고, 나중에 새로운 사용자 ID로 전환 runuser
같은 것을 사용하는 것이 :
exec runuser -u $TARGE_UID /some/command
위의 어느 경우 옵션 인 경우 sudo rm -rf mydirectory
은 대화 형 컨테이너를 회전시키는 것만큼이나 작동해야합니다.
'-e LOCAL_USER_ID = 'id -u $ USER''이 (가) 사용되는 컨테이너를 실행 하시겠습니까? – SomethingSomething