Docker容器内/etc/hosts文件创建更新时机及生成逻辑问询
Docker容器
/etc/hosts文件生成逻辑(无特殊启动参数场景) - 结论先行:仅用
docker run <镜像ID>启动容器时,镜像中自带的/etc/hosts文件会被完全忽略,不存在「先用镜像版本再动态修改」的流程 - 具体生成规则:
- 容器启动阶段,Docker daemon会根据当前分配的容器IP、主机名、默认域名解析规则,直接生成全新的
/etc/hosts文件挂载到容器的/etc目录下,属于容器的专属挂载文件,既不属于镜像层也不属于容器可写层 - 可以通过
docker inspect <容器ID/名称>查看Mounts字段,能找到/etc/hosts对应的宿主机本地存储路径,完全独立于镜像文件系统
- 容器启动阶段,Docker daemon会根据当前分配的容器IP、主机名、默认域名解析规则,直接生成全新的
- 验证方法非常简单:
你可以先构建一个测试镜像,在Dockerfile里特意修改
/etc/hosts写入自定义内容,之后直接用docker run启动这个镜像,进入容器查看/etc/hosts,会发现你在镜像里写入的内容全部消失,只剩Docker生成的默认条目。 - 如果需要保留自定义hosts条目,要么启动时加
--add-host参数动态添加,要么通过挂载宿主机hosts文件的方式实现,直接在镜像里修改/etc/hosts是无效的。
内容的提问来源于stack exchange,提问作者user10916892
相关产品推荐
相关产品推荐

