首页/云/Docker 容器速查/docker run --add-host 注入 hosts 记录
网络与存储52 条

docker run --add-host 注入 hosts 记录

把额外的 名称→IP 映射写进容器 /etc/hosts:适合指向宿主机服务或外部固定地址,host-gateway 是代表宿主的特殊值。

Docker 容器速查云更新于 2026-10-13

参数是干什么的

docker run --add-host 把额外的名称到 IP 映射写进容器的 /etc/hosts。它适合让容器访问宿主机上的服务,或指向某个固定地址,免去修改宿主 DNS。host-gateway 是表示宿主机的特殊值,写成 host.docker.internal:host-gateway 就能稳定访问宿主服务,不必写死宿主 IP。

基本信息

用途向容器注入 hosts 记录
语法--add-host 名称:IP,可重复指定多条
特殊值host-gateway 表示宿主机地址
生效时机容器创建时写入 /etc/hosts
适用平台Docker Engine(host-gateway 需较新版本支持)

典型使用场景

  • 容器访问宿主上运行的服务,避免写死宿主 IP
  • 指向内网固定地址,临时替代 DNS
  • 本地开发环境模拟线上域名解析
  • 排查解析异常时先看 /etc/hosts 里的条目
  • 让容器内应用连到指定实例做验证

注入与核对

注入与核对
docker run -d --name web --add-host api.internal:10.0.0.8 --add-host host.docker.internal:host-gateway nginx:1.27
docker exec web cat /etc/hosts                          # 确认记录已写入
docker exec web getent hosts host.docker.internal        # 验证解析结果
docker inspect -f '{{json .HostConfig.ExtraHosts}}' web   # 核对容器配置中的条目

写法与含义

写法含义注意
--add-host 名称:IP写入一条 hosts 记录可重复指定多条
host-gateway代表宿主机地址的特殊值与固定名称搭配使用最稳
/etc/hosts容器内实际生效位置内容在创建时生成
ExtraHostsinspect 中的对应字段排查时可核对配置
hosts 条目在创建容器时写入,运行期间无法修改,需要改地址只能重建容器。
当 hosts 条目与真实 DNS 同名时会优先生效,排查解析异常时先检查这一段内容。

使用建议与边界

  • 访问宿主服务优先用表示宿主机的特殊值,避免写死会变化的地址
  • 条目只在创建时写入,运行中改地址必须重建,规划时留好变更窗口
  • 同名条目会覆盖真实解析结果,排查网络问题时先看这一段
  • 这类记录适合少量固定映射,大量域名解析仍应交给正规的名称服务
  • 把用到的条目写进编排文件,避免只存在于某次手工命令里
编排场景下可以把这些条目写进服务的额外主机字段,让配置随文件一起版本化,避免只留在某台机器的命令历史里。

易错点

  • 想在运行期修改条目:只能重建容器,直接改容器内文件在重建后会丢失
  • 与真实 DNS 同名导致解析被覆盖:应用连到意外地址,排查时容易只怀疑 DNS 服务
  • 写死宿主 IP 而不用 host-gateway:宿主地址变化后容器内的连接全部失效
  • 多条目写法出错却以为已生效:需要 exec 进容器实际核对 /etc/hosts 内容

数据来源与参考

  • Docker 官方 CLI 参考:docker run 的 --add-host(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌