问题
最近有个需求需要在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