DOCKERFILE
Вам необходимо добавить команду chsh -s /path/to/shell
, чтобы добавить оболочку ZSH по умолчанию для пользователя в контейнере:
FROM archlinux:latest
# Install things...
# Install zsh & oh-my-zsh
# Retrieve custom .zshrc from a repository and place it at ~/.zshrc
# Clone extensions for oh-my-zsh
# Make ZSH the default shell for the current user in the container
# To check that the shell was indeed added: `chsh -l` and you should see it in the list.
RUN chsh -s ~/.zshrc
# Run zsh on container start
CMD [ "zsh" ]
ДРУГИЕ ПОДХОДЫ
Dockerfile CMD
Это не работает, потому что порядок выполнения:
CMD [ "zsh && source ~/.zshrc" ]
Но это должно работать (не проверено):
# using `root` user, adjust as needed for your case
CMD [ "source /root/.zshrc", "zsh"]
Docker Entrypoint
Если вы не хотите добавлять его в Dockerfile, используйте его в качестве точки входа:
docker run --rm -it --entrypoint "chsh -s /root/.zshrc" image-name
Обратите внимание, что в примере предполагается, что пользователь в контейнере root
, отрегулируйте его в соответствии с вашим случаем.