如何在运行docker容器中编辑/ etc / hosts文件

我正在处理一个应用程序,它需要将一些configuration存储在泊坞窗容器的/ etc / hosts文件中。 我已经用很多选项尝试过了,但在运行时没有find任何修改/ etc / hosts文件的正确方法。

我想通过Dockerfile或java代码来做到这一点。 我能够构builddocker镜像并手动修改/ etc / hosts文件,但不幸的是这不是我们的项目需求。

取决于你想做什么样的修改。 如果您只需要添加更多的主机,您可以在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

如果您使用的是docker-compose.yml -compose,推荐的解决scheme是使用--add-host选项来docker run docker-compose.yml docker rundocker-compose.yml文件中的等效docker-compose.yml

但是,我和你在同一条船上。 我有一个脚本来修改我想在容器中运行的hosts文件,所以我做的是将脚本COPY到容器中并使其可执行,然后在您select的Dockerfile的CMD脚本中调用脚本来修改主机文件

作品

在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.sh脚本中,我执行该脚本来修改主机文件

 # modify the hosts file bash ./modifyHostsFile.sh 

不起作用

在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"] 

您必须在您的CMD脚本中运行修改您的主机文件的脚本。 如果你在RUN bash ./modifyHostsFile.sh中通过RUN bash ./modifyHostsFile.sh运行它,它将被添加到那个容器中,但是Docker将继续Dockerfile中的下一步,创build一个新的容器(它为每一步创build一个新的中间容器在Dockerfile中),你对/etc/hosts更改将被覆盖。

我有同样的问题,并ex模式下用vi来克服它。

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