我正在开发一个应用程序,它需要将一些配置存储在docker容器的/ etc/hosts文件中.我尝试了很多选项,但没有找到任何正确的方法在运行时修改/ etc/hosts文件.
我想通过Dockerfile或java代码来实现.我能够构建docker镜像并手动修改/ etc/hosts文件,但不幸的是,这不是我们的项目要求.
取决于您想要做什么样的修改.如果您只需要添加更多主机,您可以在docker run命令中执行此操作,例如 -
docker run --add-host="localA:127.0.0.1" --add-host="localB:172.0.0.1" ....
Run Code Online (Sandbox Code Playgroud)
此链接也可能有用: - https://github.com/docker/docker/issues/10324
如果您使用 docker-compose ,推荐的解决方案是使用文件中的--add-host选项docker run或等效项docker-compose.yml。
但是,我和你在同一条船上。我有一个脚本可以修改我想在容器中运行的主机文件,所以我所做的是COPY将脚本放入容器中并使其可执行,然后在CMD您选择的 Dockerfile脚本中,调用您的脚本来修改主机文件
在 Dockerfile 中
# add the modifyHostsFile script, make it executable
COPY ./bash-scripts/modifyHostsFile.sh /home/user/modifyHostsFile.sh
RUN sudo chmod +x /home/user/modifyHostsFile.sh
# run the script that starts services
CMD ["/bin/bash", "/home/user/run.sh"]
Run Code Online (Sandbox Code Playgroud)
在run.sh脚本中我执行该脚本来修改主机文件
# modify the hosts file
bash ./modifyHostsFile.sh
Run Code Online (Sandbox Code Playgroud)
在 Dockerfile 中
# add the modifyHostsFile script, make it executable
COPY ./bash-scripts/modifyHostsFile.sh /home/user/modifyHostsFile.sh
RUN sudo chmod +x /home/user/modifyHostsFile.sh
# modify the hosts file right now
RUN bash /home/user/modifyHostsFile.sh
# run the script that starts services
CMD ["/bin/bash", "/home/user/run.sh"]
Run Code Online (Sandbox Code Playgroud)
您必须在脚本期间运行修改主机文件的CMD脚本。如果您通过RUN bash ./modifyHostsFile.sh在 Dockerfile 中运行它,它将被添加到该容器中,但是 Docker 将继续执行 Dockerfile 中的下一步并创建一个新容器(它为 Dockerfile 中的每个步骤创建一个新的中间容器)和您的更改在/etc/hosts将被覆盖。
| 归档时间: |
|
| 查看次数: |
10234 次 |
| 最近记录: |