내가 사용한다면--user
매개 변수를 docker run
사용하면 변경 사항(예: 단순 변경 mkdir
)이 해당(루트가 아닌) 사용자에 의해 수행되는 것으로 나타납니다. 그러나 apt
루트 권한이 필요하기 때문에 컨테이너 내부와 같은 명령을 실행할 수 없습니다 . 기본적으로 sudo
Docker debian
이미지가 사전 설치되어 있지 않습니다 ubuntu
.
이 문제를 해결하는 우아한 방법은 무엇입니까?
답변1
당신이 알고 있었다면언제그리고어디변경 사항이 기록되며 chown
나중에 다음 파일에서 사용할 수 있습니다.
- 매개변수( , )를 사용하여
id -u
호스트(루트가 아닌) 사용자의 사용자 및 그룹 ID를 Docker 컨테이너에 전달합니다.id -g
--env
- 루트로 명령/스크립트 실행(컨테이너 내)
- 마지막으로
chown
(컨테이너 내에서) 실행하여 호스트 사용자가 변경한 것처럼 보이도록 합니다.
답변2
나는 이것이 특별히 우아한 해결책이라고 생각하지 않지만, 사용자 및 그룹 ID가 (루트가 아닌) 호스트 사용자의 ID와 일치하는 컨테이너 내부에 더미 사용자를 생성하는 것이 가능합니다.
- 매개변수( , )를 사용하여
id -u
호스트(루트가 아닌) 사용자의 사용자 및 그룹 ID를 Docker 컨테이너에 전달합니다.id -g
--env
호스트(루트가 아닌) 사용자의 그룹 ID와 일치하는 새 그룹을 생성합니다.
addgroup --gid $DUMMY_GID dummy
호스트(루트가 아닌) 사용자의 사용자 ID와 일치하는 새 사용자를 생성합니다.
adduser --uid $DUMMY_UID --gid $DUMMY_GID --disabled-password --gecos "" dummy
루트 권한이 필요한 명령이 작동합니다
다른 명령/스크립트 실행
runuser
runuser -u dummy -- command