心遠愈知 發表於 2025-12-19 10:23:35

Docker容器中的域名解析配置的问题及解决过程

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">问题描述</a></li><li><a href="#_label1">解决办法</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">进入容器的/etc/hosts文件配置域名解析</a></li><li><a href="#_lab2_1_1">docker build 构建镜像的时候添加</a></li><li><a href="#_lab2_1_2">docker run 启动容器的时候添加(推荐)</a></li><li><a href="#_lab2_1_3">docker-compose.yml文件指定</a></li></ul><li><a href="#_label2">总结</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>问题描述</h2>
<p>因为要通过局域网域名访问其他服务,在宿主机上配置了域名解析,对于docker容器无效。</p>
<p class="maodian"><a name="_label1"></a></p><h2>解决办法</h2>
<p>局域网内的域名不是公网可访问,需要配置域名解析器才能正确访问。</p>
<p>Docker 容器无法解析局域网内的域名,就算你配置了本地主机的 hosts 域名映射也不行。</p>
<p>Docker 环境不同于 wamp 或 xampp,对于局域网内的域名解析,Docker 需要到 Docker 容器中配置 hosts 文件。</p>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>进入容器的/etc/hosts文件配置域名解析</h3>
<p>docker容器启动后进入<code>/etc/hosts</code>配置域名解析,具体操作如下:</p>
<ol><li>进入docker容器:</li></ol>
<div class="jb51code"><pre class="brush:bash;">docker exec -it 容器id /bin/sh
</pre></div>
<ol start="2"><li>在<code>/etc/hosts</code>文件配置域名解析</li></ol>
<div class="jb51code"><pre class="brush:bash;">vi /etc/hosts
</pre></div>
<p><code>hosts</code>文件案例如下:</p>
<div class="jb51code"><pre class="brush:bash;">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.20.0.6      5bf80aa1c49f
180.101.49.11www.baidu.com
</pre></div>
<p>⚠️这种配置的缺点是<strong>每次容器启动都要重新配置</strong>。</p>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>docker build 构建镜像的时候添加</h3>
<div class="jb51code"><pre class="brush:bash;">docker build
--add-host zjq.com:172.2.3.4
-t local/test
openjdk:latest .
</pre></div>
<p><a href="https://docs.docker.com/engine/reference/commandline/build/" rel="external nofollow"   target="_blank">docker build命令官方文档地址</a></p>
<p class="maodian"><a name="_lab2_1_2"></a></p><h3>docker run 启动容器的时候添加(推荐)</h3>
<div class="jb51code"><pre class="brush:bash;">docker run -d --name container_name
--add-host zjq.com:172.2.3.4
image_name:tag;
</pre></div>
<p><a href="https://docs.docker.com/engine/reference/commandline/run/" rel="external nofollow"   target="_blank">docker run命令官方文档地址</a></p>
<p class="maodian"><a name="_lab2_1_3"></a></p><h3>docker-compose.yml文件指定</h3>
<div class="jb51code"><pre class="brush:yaml;">zjqtest:
build: image_name:tag
extra_hosts:
    zjq.com: 172.2.3.4
    zjq666.com: 256.69.2.9
</pre></div>
<p class="maodian"><a name="_label2"></a></p><h2>总结</h2>
<p>以上为个人经验,希望能给大家一个参考,也希望大家多多支持琼殿技术社区。</p>
頁: [1]
查看完整版本: Docker容器中的域名解析配置的问题及解决过程