因为docker容器自带Hosts文件,宿主机修改hosts文件容器内不同步,会给开发和测试带来麻烦,想要同步宿主机hosts文件主要有三种方式:
1. 直接在容器内修改
# 查看所有容器
docker ps -a
CONTAINER ID  IMAGE   COMMAND   CREATED   STATUS   PORTS   NAMES
8a4cc0829c07  ghcr.io "/init"   23 hours ago  Up 23 hours  noname
# 进入容器
docker exec -it 8a4cc0829c07 bash
# 修改内部hosts文件
vi /etc/hosts
# 刷新
systemctl restart nscd弊端:操作繁琐,存在缓存,hosts更新不及时。
2. 在docker启动命令中添加hosts
docker run -d \
  --name=noname \
  -e TZ=Asia/Shanghai \
  -p 16881:16881 \
  --add-host=reddit:8.8.8.8 \
  --restart unless-stopped \
  noname
弊端:每次修改hosts需要删除容器,重新启动容器,对不能停止运行的业务不适用;如果配置文件不映射到宿主机会带来配置的时间成本。
3. 使用host模式对宿主机hosts文件进行映射
docker run -d \
  --name=noname \
  -e TZ=Asia/Shanghai \
  --add-host=reddit:8.8.8.8 \
  --network=host \
  --restart unless-stopped \
  noname