在docker容器中手动修改了hosts增加了一些域名的解析,但对容器进行重启后hosts全部丢失了。因为容器中的/etc/hosts,、/etc/resolv.conf、/etc/hostname这三个文件并不存在于镜像中,而是存在于宿主机的/var/lib/docker/containers/目录中,在重启docker容器时会通过mount的形式将这些文件挂载到容器内部。因此会覆盖容器中对这些文件的手动修改。本文地址:http://www.04007.cn/article/1178.html,未经许可,不得转载.
如果可以通过指定DNS来解决的话,可以在启动容器时添加选项--dns=x.x.x.x 来指定容器内的dns,也可修改docker的配置文件/etc/docker/daemon.json,加入DNS配置选项,这个就和修改镜像的DNS一样。见地址: http://www.04007.cn/article/1168.html本文地址:http://www.04007.cn/article/1178.html,未经许可,不得转载.
要实现容器中的hosts永久修改和保存,有如下几个方法:本文地址:http://www.04007.cn/article/1178.html,未经许可,不得转载.
1.在docker的启动命令中添加参数。本文地址:http://www.04007.cn/article/1178.html,未经许可,不得转载.
在docker run运行起容器的时候,添加参数--add-host [域名]:[IP],将要访问的其他服务器的host和ip加入到/etc/hosts文件。示例如下:# 添加1个host指向
docker run -d -p 80:80 --add-host domain.com:192.119.14.23 -name demo demo:latest
# 添加多个host指向
docker run -d -p 80:80 --add-host domain.com:192.119.14.23 --add-host domain2.com:192.119.14.22 -name demo demo:latest本文地址:http://www.04007.cn/article/1178.html,未经许可,不得转载.
2.在docker容器启动脚本后添加一个修改hosts命令本文地址:http://www.04007.cn/article/1178.html,未经许可,不得转载.
这个想法比较直接也可用。docker exec <容器Id> /bin/sh -c "echo 192.119.14.23 domain.com >> /etc/hosts"
本文地址:http://www.04007.cn/article/1178.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |