首页 > 解决方案 > 创建新 pod 时如何更新 pod 中的 /etc/hosts 文件

问题描述

我使用 bash 脚本/etc/hosts使用静态主机名和其他 pod 的默认 IP 更新 pod 的文件。当 pod 重新启动或手动强制删除时。创建的新 pod 不会有更新的/etc/hosts文件?如何处理这个

标签: bashdockerkubernetesupdateshosts

解决方案


什么都不做;甚至不要尝试管理/etc/hosts文件。Docker提供容器之间的内部 DNS 解析Compose 中的 Networking有更清晰的描述),因此您通常可以--name直接使用其他容器作为主机名。

如果您使用docker run命令,则需要手动docker network create创建网络(为第一个链接创建“用户定义的网桥”)。

# Create a non-default network
docker network create some_network

# Run a server on that network
docker run -d --net some_network --name server nginx

# On the same network; uses the other container's name
# "server" as a host name
docker run --rm --net some_network \
  busybox \
  wget -O- http://server

如果您在 Docker Compose 下运行它,它会为您完成所有这些设置(再次,请参阅Compose中的网络;Compose 默认网络已命名default但不是“默认网桥”)。如果您在另一个集群环境(Kubernetes、Nomad)中运行,它将拥有自己类似的 DNS 解析系统。


推荐阅读