Похоже на ошибку драйвера. Самый простой способ определить это — протестировать заведомо исправный драйвер (, что, к сожалению, означает Windows ).
Если вы хотите продолжить свой первоначальный подход и просто хотите обновить файл, который будет получен от zsh
при входе в систему, вы можете добавить к/etc/zsh/zshrc
:
RUN echo EDITOR=vim >> /etc/zsh/zshrc
Тогда какой бы пользователь ни запустил контейнер, он автоматически получит этот файл.
Если у пользователей должно быть имя пользователя и 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 и пользователя с именем bob
с uid 1000 (вы можете изменить bob
на любое имя, связанное с uid 1000.
Затем вы можете писать в ~/.zshrc
этого пользователя вместо/root/.zshrc
Я запустил:
создал файл с именем.zshrc sourcing /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
Что вы думаете об этом решении?