Источник /root/.zshrc в Docker с использованием текущего пользователя

Похоже на ошибку драйвера. Самый простой способ определить это — протестировать заведомо исправный драйвер (, что, к сожалению, означает Windows ).

0
17.10.2020, 18:58
3 ответа

Если вы хотите продолжить свой первоначальный подход и просто хотите обновить файл, который будет получен от zshпри входе в систему, вы можете добавить к/etc/zsh/zshrc:

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

Тогда какой бы пользователь ни запустил контейнер, он автоматически получит этот файл.

1
18.03.2021, 22:56

Если у пользователей должно быть имя пользователя и 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

1
18.03.2021, 22:56

Я запустил:

создал файл с именем.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

Что вы думаете об этом решении?

0
18.03.2021, 22:56

Теги

Похожие вопросы