Docker

使用目前使用者在 Docker 中獲取 /root/.zshrc

  • October 17, 2020

我正在嘗試為 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.

這裡可能是什麼問題?

如果您想繼續使用原來的方法,並且如果您只是想更新zsh登錄時將獲取的文件,您可以附加到/etc/zsh/zshrc

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

然後無論使用者執行容器,它都會自動獲取該文件。

如果使用者擁有使用者名和 shell 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" ]

在這裡,我添加了一個名為bobgid 1000 的組和一個名為bobuid 1000 的使用者(您可以更改bob為與 uid 1000 關聯的任何名稱。

然後,您可以寫入該使用者的~/.zshrc而不是/root/.zshrc

引用自:https://unix.stackexchange.com/questions/614988