我在docker (搜索引擎)上测试一个应用程序,但是当我使用docker run时,bashrc不能工作,例如,如果bashrc中有一个别名,我就不能使用它。文件bashrc被复制到容器中,但仍然不能使用它。我的问题是为什么不呢?这仅仅是因为bashrc需要重新加载,还是还有另外一个原因?
sudo docker run \
--mount type=bind,source=$(pwd)/remise/bashrc,destination=/root/.bashrc,readonly \
--name="s-container" \
ubuntu /go/bin/s qewrty发布于 2021-04-16 01:05:57
如果您将容器启动为
docker run ... image-name \
/go/bin/s qwerty当Docker创建容器时,它直接运行命令/go/bin/s qwerty;它不调用bash或任何其他shell来执行它。任何东西都不知道如何寻找.bashrc文件。
类似地,如果您的Dockerfile指定
CMD ["/go/bin/s", "qwerty"]它直接运行命令,没有shell。
有一个CMD的备用shell形式,它接受一个命令字符串,并通过/bin/sh -c运行它。这确实涉及到一个shell;但是它既不是交互式的也不是登录的shell,它作为sh被调用,所以它不会读取任何shell dotfile(关于/bin/sh碰巧是GNU的具体情况,请参见Bash启动文件)。
由于这些指定主容器命令的公共路径都不会读取.bashrc或其他shell dotfile,所以尝试编写或注入这些文件通常是没有意义的。如果需要设置环境变量,请考虑Dockerfile ENV指令或入口点包装脚本。
https://stackoverflow.com/questions/67112648
复制相似问题