Docker构建镜像时向/etc/hosts添加host出现只读错误如何解决?
报错根本原因
该报错和Docker版本高低无关,是Docker内置的设计限制:
/etc/hosts不属于Docker镜像的分层存储内容,是Docker在容器启动时根据配置动态生成、挂载到容器内的虚拟文件,存储在宿主机的Docker运行时目录中,每个容器启动时都会重新生成对应版本,因此构建阶段对该文件的修改本身就无法留存到镜像里,容器启动后会被新生成的文件完全覆盖- 为了避免用户在构建阶段执行这类无意义的修改操作,Docker直接将构建过程中每一步
RUN指令运行的临时容器内的/etc/hosts设为只读权限,因此写入操作会触发「Read-only file system」报错
你了解到的docker run --add-host参数、docker-compose的extra_hosts配置都是官方推荐的正确实现方案,二者都是在容器启动生成/etc/hosts的阶段直接注入自定义host条目,符合Docker的设计逻辑。
内容的提问来源于stack exchange,提问作者sanz
相关产品推荐
相关产品推荐

