현재 사용자를 사용하여 Docker에서 /root/.zshrc 가져오기

현재 사용자를 사용하여 Docker에서 /root/.zshrc 가져오기

루트 사용자를 위한 컨테이너를 구축한 다음 내 사용자를 사용하여 실행하고 /root/.zshrc내부에서 가져오려고 합니다.

다음은 최소한의 예입니다.

FROM ubuntu:20.04

RUN apt update 
RUN apt install --assume-yes --fix-broken \
    curl \
    wget \
    zsh

RUN echo EDITOR=vim >> /root/.zshrc

RUN chmod a+rx /root
CMD [ "source /root/.zshrc", "zsh"]

호출은 다음과 같습니다.

docker run --rm -it -v "$HOME/.ssh:$HOME/.ssh:ro" -v "$HOME/.netrc:$HOME/.netrc:ro" -v /etc/passwd:/etc/passwd:ro -v /etc/shadow:/etc/shadow:ro -v /etc/group:/etc/group:ro --user $UID:$UID foo_minimal

내가 받은 오류는 다음과 같습니다.

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"source /root/.zshrc\": stat source /root/.zshrc: no such file or directory": unknown.

여기서 무엇이 잘못되었을 수 있습니까?

답변1

zsh원래 방법을 계속 사용하고 로그인 시 얻은 파일을 업데이트하려는 경우 다음을 추가할 수 있습니다 /etc/zsh/zshrc.

RUN echo EDITOR=vim >> /etc/zsh/zshrc

그런 다음 사용자가 컨테이너를 실행할 때마다 자동으로 파일을 가져옵니다.

답변2

사용자에게 사용자 이름과 셸 RC 파일이 있는 경우 Dockerfile의 일부로 생성하는 것을 고려할 수 있습니다.

FROM ubuntu:20.04

RUN apt update && \
    apt install --assume-yes --fix-broken \
    curl \
    wget \
    zsh

RUN groupadd -g 1000 bob && \
    useradd -m --uid 1000 --gid 1000 -s /bin/zsh bob && \
    echo EDITOR=vim >> /home/bob/.zshrc

CMD [ "zsh" ]

bob여기서는 gid 1000이라는 그룹과 uid 1000이라는 사용자를 추가했습니다 ( uid 1000과 관련된 어떤 이름으로든 bob변경할 수 있습니다 .bob

~/.zshrc그런 다음 대신 해당 사용자에게 쓸 수 있습니다/root/.zshrc

답변3

나는 그것을 실행했다 :

.zshrc source /root/.zshrc라는 파일을 생성하고 사용자의 홈 디렉터리에 설치합니다.

~/git/docker/base-ubuntu-20.04/test-delete(allow_multiuser*) » cat .zshrc                                                                                                         mihai@mihai-pc 17/10/20 21:07:24
#!/bin/zsh

source /root/.zshrc

그런 다음:

~/git/docker/base-ubuntu-20.04/test-delete(allow_multiuser*) » docker run -it -v "$HOME/.ssh:$HOME/.ssh:ro" -v "$HOME/.netrc:$HOME/.netrc:ro" -v /etc/passwd:/etc/passwd:ro -v /etc/shadow:/etc/shadow:ro -v /etc/group:/etc/group:ro --user $UID:$UID --env "$USER=$USER" -v $(realpath .zshrc):/home/$USER/.zshrc foo_minimal /bin/zsh          

df45e8b82593% echo $EDITOR
vim

이 솔루션에 대해 어떻게 생각하시나요?

관련 정보