问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

永久修改Docker容器中hosts文件的三种方法

创作时间:
作者:
@小白创作中心

永久修改Docker容器中hosts文件的三种方法

引用
CSDN
1.
https://blog.csdn.net/a17432025/article/details/138244684

在使用Docker时,有时需要修改容器中的hosts文件。但是,如果容器被重新启动,hosts文件就会被重置。那么,如何才能永久修改hosts文件的条目呢?本文将介绍三种不同的方法。

一、修改docker run参数

这是Docker官方推荐的方法。具体用法如下:

docker run --add-host=www.sina.com.cn:127.0.0.1 xxx -it /bin/bash

这个例子在创建容器时将新浪站点指向本机。如果需要添加多个条目,就增加几个--add-host参数即可。

类似的方法是在容器启动时将该文件挂载到容器内的/etc/hosts文件中,例如:

docker run -v /etc/hosts.container:/etc/hosts ...

这个例子是将宿主机器上的hosts.container文件挂接到容器中。

二、修改compose的yaml文件

利用extra_hosts小节把需要添加的host编写好,创建时就会自动创建/etc/hosts文件。如下所示:

php72:
  container_name: "php72"
  hostname: "php72"
  image: "xxxx"
  extra_hosts:
- "www.sina.com.cn:127.0.0.1"
- "www.google.com:127.0.0.1"
  volumes:
- xxx:xxx

三、直接修改hostconfig.json

在实际使用中,由于容器已经创建,大家都不太愿意重新创建,以免出现各种兼容性问题。因此,如何在已经创建好的容器里面,永久添加固定的hosts文件条目呢?目前一个可行的办法就是直接修改容器的hostconfig.json文件。具体步骤为:

1.停止docker

此环节必须做,否则任何对hostconfig的修改都无效,会自动改回原来状态。

systemctl stop docker

2.进入容器目录并修改

首先找到容器的目录,进入/var/lib/docker/containers/目录,找到自己的容器目录(一串字母数字),进入后,编辑hostconfig.json

cd /var/lib/docker/containers/xxxxxx
vi hostconfig.json

找到"ExtraHosts":null部分,将其替换为你想添加的hosts小节内容即可,如替换为:

"ExtraHosts":["www.sina.com.cn:172.17.0.1","www.baidu.om:127.0.0.1"]

保存后退出。

3.重启docker

重启docker后完成修改,测试hosts文件已经正式添加到指定容器。

systemctl start docker

下面是一个示例,大家可以试试:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号