現在のユーザーを使用してDockerから/root/.zshrcをインポートする

現在のユーザーを使用してDockerから/root/.zshrcをインポートする

rootユーザー用のコンテナを構築し、私のユーザーを使用して実行し、/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

このソリューションについてどう思いますか?

関連情報