gpt4 book ai didi

docker - 启动容器时加载外壳配置文件

转载 作者:行者123 更新时间:2023-12-02 20:58:36 24 4
gpt4 key购买 nike

问题

我想在每次使用.zshrc输入docker容器时加载自定义docker run -it container_name,因为.zshrc文件已经在容器中了。

描述

我有一个具有以下结构的Dockerfile:

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

# Run zsh on container start
CMD [ "zsh" ]

所有这一切。如果我进入容器,我可以看到我的自定义 .zshrc文件应该在其中,如果我运行 source ~/.zshrc,它将被加载并且所有扩展都可以工作。

尝试

我尝试直接在 CMD步骤中采购配置文件,但找不到指定的文件。更新后的行如下所示: CMD [ "zsh && source ~/.zshrc" ]
我知道这可能不是使用docker容器的预期方式,但它更多是一种学习经验,我想看看是否可以做到。

最佳答案

DOCKERFILE

您需要添加命令chsh -s /path/to/shell,以将ZSH shell作为默认用户添加到容器中:

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入口点

如果您不想将其添加到Dockerfile中,则将其用作入口点:
docker run --rm -it --entrypoint "chsh -s /root/.zshrc" image-name

请注意,该示例假定容器中的用户为 root,请相应调整您的大小写。

关于docker - 启动容器时加载外壳配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61609235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com