如何在运行docker container

时间:2016-06-16 13:23:31

标签: docker centos7

我正在开发一个应用程序,它需要将一些配置存储在docker容器的/ etc / hosts文件中。 我尝试了很多选项,但没有找到任何正确的方法在运行时修改/ etc / hosts文件。

我想通过Dockerfile或java代码来实现。 我能够构建docker镜像并手动修改/ etc / hosts文件,但不幸的是,这不是我们的项目要求。

3 个答案:

答案 0 :(得分:7)

取决于您想要做什么样的修改。如果您只需要添加更多主机,您可以在docker run命令中执行此操作,如 -

docker run --add-host="localA:127.0.0.1" --add-host="localB:172.0.0.1" ....

此链接也可能有用: - https://github.com/docker/docker/issues/10324

答案 1 :(得分:4)

如果您正在使用docker-compose,建议的解决方案是使用--add-host docker run选项或docker-compose.yml文件中的等效选项。

但是,我和你在同一条船上。我有一个脚本修改了我想要在容器中运行的hosts文件,所以我做的是COPY脚本进入容器并使其可执行,然后在Dockerfile中{{1}您选择的脚本,调用您的脚本来修改主机文件

作品

Dockerfile中的

CMD

# 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.sh

不起作用

Dockerfile中的

# modify the hosts file
bash ./modifyHostsFile.sh

您必须在# 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"] 脚本中运行修改主机文件的脚本。如果你通过Dockerfile中的CMD运行它,它将被添加到该容器中,但是Docker将继续执行Dockerfile中的下一步并创建一个新容器(它为每个步骤创建一个新的中间容器。 Dockerfile)和您对RUN bash ./modifyHostsFile.sh的更改将被覆盖。

答案 2 :(得分:0)

我遇到了同样的问题,并在vi模式下使用ex克服了这个问题。

ex -sc '%s/foo/bar/g|x' /etc/hosts