如何在“docker build”期间更新 Docker 映像中的 /etc/hosts 文件

新手上路,请多包涵

我想在“docker build”期间更新我的 /etc/hosts 文件。

我在 Dockerfile 中添加了以下行,但它既没有更新 /etc/hosts 文件也没有给出任何错误。

 RUN echo "192.168.33.11    mynginx" >> /etc/hosts

我需要更新 /etc/hosts 。有人可以就此提出建议吗?

原文由 Prakash 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 857
1 个回答

使用更新版本的 docker,这可以通过 docker-compose 及其 extra_hosts 指令 来完成

添加主机名映射。

使用与 docker run 客户端 --add-host 参数 相同的值(应该已经可用于 docker 1.8)。

 extra_hosts:
 - "somehost:162.242.195.82"
 - "otherhost:50.31.209.229"

简而言之:在运行容器时修改容器的 /etc/hosts ,而不是在构建容器时。


使用 Docker 17.x+,你有一个 docker build --add-host 下面提到,但是,正如在 问题 34078这个答案 中所评论的:

构建期间的 --add-host 功能旨在允许在构建期间覆盖主机,但不会将该配置保留在映像中。

提到的解决方案确实参考了我上面建议的 docker-compose:

  • 运行内部 DNS;您可以设置在守护程序中使用的默认 DNS 服务器;这样每个启动的容器都会默认自动使用配置的 DNS
  • 使用 docker compose 并向您的开发人员提供 docker-compose.yml

docker compose 文件允许您指定启动容器时应使用的所有选项,因此开发人员只需 docker compose up 即可使用他们需要设置的所有选项来启动容器。

原文由 VonC 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题