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
このソリューションについてどう思いますか?