问题

最近有个需求需要在docker容器里进行hosts绑定。尝试了将hosts 写在Dockerfile里,构建出镜像,但是启动容器后绑定的hosts会丢失;而且手动进入容器绑定hosts后,重启容器后hosts也会丢失。

原因

简单的说,docker容器里的/etc/hosts是动态生成的,重启容器或者由镜像run一个容器时,/etc/hosts会被重新构建,所以无论怎么修改hosts,最后都会被重置。
另外如果仔细观察可以发现,容器的hosts里有一条容器id的hosts,绑定的是容器内部的ip,而这个ip是会变的,更加说明hosts是动态的。

172.17.0.2	7049a6a6b2f1
解决方式

在run 命令 后边加入 --add-host 参数,绑定hosts
如:

docker run -d -p 8080:8080 --add-host api.test.com:10.100.33.101 test

参考
docker修改hosts

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐