docker容器/etc/hosts文件修改方法

 更新时间:2023年06月21日 10:33:03   作者:Dontla  
在容器内部,当需要访问其他容器或主机时,可以通过/etc/hosts文件来解析主机名,从而实现网络通信,这篇文章主要介绍了docker容器/etc/hosts文件,需要的朋友可以参考下

/etc/hosts

容器的/etc/hosts文件是一个本地的域名解析文件,用于将主机名映射到IP地址。在容器内部,当需要访问其他容器或主机时,可以通过/etc/hosts文件来解析主机名,从而实现网络通信。

具体来说,当容器需要访问其他容器或主机时,会先在自己的/etc/hosts文件中查找对应的主机名和IP地址的映射关系。如果找到了,就直接使用该IP地址进行通信;如果没有找到,则会将请求发送到DNS服务器进行解析。

在容器中,通常会将主机名和IP地址的映射关系写入/etc/hosts文件中,以提高网络访问的效率和稳定性。例如,如果容器需要访问主机上的某个服务,可以将主机名和IP地址的映射关系写入/etc/hosts文件中,这样容器就可以直接使用IP地址进行访问,而无需通过DNS服务器进行解析。

总之,容器的/etc/hosts文件是一个非常重要的文件,它可以帮助容器实现网络通信,并提高网络访问的效率和稳定性。

为什么更改/etc/hosts后重启容器,更改内容会消失?因为是临时文件

容器内的/etc/hosts文件是临时的,容器重启后会被重置。如果需要在容器内永久保存修改后的/etc/hosts文件,可以将其挂载到宿主机上的一个文件中,然后在容器启动时将该文件挂载到容器内的/etc/hosts文件中。

具体操作可以参考以下步骤:

  • 在宿主机上创建一个文件,例如/etc/hosts.container,用于保存容器内的/etc/hosts文件。
  • 在容器启动时将该文件挂载到容器内的/etc/hosts文件中,例如:
  docker run -v /etc/hosts.container:/etc/hosts ...

3.在容器内修改/etc/hosts文件时,实际上是修改了宿主机上的/etc/hosts.container文件,这样即使容器重启,修改后的/etc/hosts文件也能够被保留下来。

注意:如果在容器内修改了/etc/hosts文件,需要手动同步到宿主机上的/etc/hosts.container文件中,否则容器重启后修改将会丢失。

(但是用挂载的方式,貌似容器一些自己生成的内容没法保留,参见下面)

我/etc/hosts文件原内容

127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.11	27b6fb63ce7d

各自作用如下:

  • 127.0.0.1 localhost:将localhost映射到本地回环地址,即127.0.0.1,用于本地测试和开发。
  • ::1 localhost ip6-localhost ip6-loopback:将IPv6的localhost地址映射到本地回环地址,用于IPv6的本地测试和开发。
  • fe00::0 ip6-localnet:将IPv6的本地网络地址映射到fe00::0,用于IPv6的本地网络通信。
  • ff00::0 ip6-mcastprefix:将IPv6的多播地址映射到ff00::0,用于IPv6的多播通信。
  • ff02::1 ip6-allnodes:将IPv6的所有节点地址映射到ff02::1,用于IPv6的节点通信。
  • ff02::2 ip6-allrouters:将IPv6的所有路由器地址映射到ff02::2,用于IPv6的路由器通信。
  • 172.17.0.11 27b6fb63ce7d:将容器ID为27b6fb63ce7d的容器的IP地址映射到172.17.0.11,用于容器之间的通信。

如果将这些映射关系删除,可能会对容器的网络通信产生影响。例如,如果删除了127.0.0.1 localhost的映射关系,容器可能无法通过localhost访问本地服务;如果删除了172.17.0.11 27b6fb63ce7d的映射关系,容器可能无法与其他容器进行通信。因此,建议不要随意修改/etc/hosts文件中的内容,以免影响容器的正常运行。

cw让添加下面这个进去,但是我从外面挂载进去后,进入容器发现上面的没有自动生成,不知道有没有问题。

172.16.80.201 xqplatformIp

所以我怀疑,之前生成内容的操作,容器是在做挂载之前完成的。

要不把echo "172.16.80.201 xqplatformIp" >> /etc/hosts加到容器启动运行脚本entrypoint.sh中?

这样做也可以,但是cw说没影响,那暂时不做了。

到此这篇关于docker容器/etc/hosts文件的文章就介绍到这了,更多相关docker容器/etc/hosts文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker容器启动后如何修改或添加端口

    docker容器启动后如何修改或添加端口

    这篇文章主要介绍了docker容器启动后如何修改或添加端口问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Dockerfile文件编写实战练习及注意事项

    Dockerfile文件编写实战练习及注意事项

    Dockerfile 是一个用于构建 Docker 镜像的文本文件,通过一系列指令来定义镜像的构建过程,这篇文章主要介绍了Dockerfile文件编写实战练习及注意事项的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • dockerfile引用自建dns服务方式

    dockerfile引用自建dns服务方式

    这篇文章主要介绍了dockerfile引用自建dns服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-10-10
  • docker 安装部署 Prometheus 与grafana的详细过程

    docker 安装部署 Prometheus 与grafana的详细过程

    本文给大家详细介绍了如何在CentOS 7上使用Docker和Docker Compose安装和配置Prometheus和Grafana,并展示了如何进行基本的监控配置和数据可视化,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • 将一个已有的应用程序迁移到Docker容器中

    将一个已有的应用程序迁移到Docker容器中

    本文主要介绍了将一个已有的应用程序迁移到Docker容器中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-06-06
  • Docker overlay 网络搭建的方法

    Docker overlay 网络搭建的方法

    Overlay网络是指通过在现有网络上叠加一个软件定义的逻辑网络,这篇文章主要介绍了Docker overlay 网络搭建的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • docker如何运行一个python脚本

    docker如何运行一个python脚本

    这篇文章主要介绍了docker如何运行一个python脚本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • centos 下docker 安装方法

    centos 下docker 安装方法

    这篇文章主要介绍了centos 下docker 安装方法,本文只介绍比较简易的安装方式,需要的朋友可以参考下
    2018-10-10
  • Docker Compose实现秒级扩容的方法步骤

    Docker Compose实现秒级扩容的方法步骤

    本文主要介绍了Docker Compose实现秒级扩容的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04
  • 在Centos7中安装Docker1.12的详细教程

    在Centos7中安装Docker1.12的详细教程

    本篇文章主要介绍了在Centos7中安装Docker1.12的详细教程。具有一定的参考价值,有兴趣的可以了解一下。
    2017-02-02

最新评论