磊叔头光光 發表於 2025-12-19 11:26:02

docker容器指定主机同网段方式

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">docker容器指定主机同网段</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">1、查询网卡的名称</a></li><li><a href="#_lab2_0_1">2、创建网络并绑定物理网卡</a></li><li><a href="#_lab2_0_2">3、容器一个固定IP</a></li><li><a href="#_lab2_0_3">4、解除容器绑定的网络</a></li><li><a href="#_lab2_0_4">5、为容器重新指定网络</a></li><li><a href="#_lab2_0_5">6、为容器重新指定网络和ip</a></li></ul><li><a href="#_label1">总结</a></li><ul class="second_class_ul"></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>docker容器指定主机同网段</h2>
<p>使用macvlan网络模式可以让Docker容器直接连接到物理网络,而不需要通过NAT或端口映射的方式来访问它们。</p>
<p>可以提高网络性能和稳定性,同时也可以使容器更易于管理。</p>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>1、查询网卡的名称</h3>
<p>使用ifconfig命令查看网卡名:</p>
<div class="jb51code"><pre class="brush:bash;">ifconfig
[网卡名]:
                inet [主机IP]netmask [子网掩码]broadcast [网关地址]
</pre></div>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202512/2025121911224738.png" /></p>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>2、创建网络并绑定物理网卡</h3>
<p><strong>网络模式 macvlan</strong></p>
<p>macvlan 可以将虚拟网卡跟主机共用同一网段。</p>
<div class="jb51code"><pre class="brush:bash;">docker network create -d macvlan--subnet=172.168.1.0/24--gateway=172.168.1.1-o parent=eth0 网络名称
</pre></div>
<div class="jb51code"><pre class="brush:bash;">        -o parent=eth0将虚拟网络绑定网卡
</pre></div>
<div class="jb51code"><pre class="brush:bash;">docker network create -d macvlan --subnet=[网段] --gateway=[网关] -o parent=[网卡] macvlan</pre></div>
<p>例如:</p>
<p>我的网卡名是eth0,网关是192.168.1.1</p>
<p>这样我可以创建一个名字叫new_macvlan01的macvlan网络如下:</p>
<div class="jb51code"><pre class="brush:bash;">docker network create -d macvlan --subnet=192.168.1.1/24 --gateway=192.168.1.1 -o parent=eth0 new_macvlan01</pre></div>
<p class="maodian"><a name="_lab2_0_2"></a></p><h3>3、容器一个固定IP</h3>
<p>可以使用如下命令创建一个容器,并给它一个固定IP:</p>
<div class="jb51code"><pre class="brush:bash;">docker run -it --name [容器名] --net macvlan --ip=[固定IP] [镜像名] /bin/bash</pre></div>
<p>例如:</p>
<p>我想以centos8镜像创建一个名字叫test的容器,并给它一个IP为192.168.1.10</p>
<div class="jb51code"><pre class="brush:bash;">docker run -it --name test --net macvlan --ip=192.168.1.10 centos8 /bin/bash</pre></div>
<p><strong>其他命令</strong></p>
<p class="maodian"><a name="_lab2_0_3"></a></p><h3>4、解除容器绑定的网络</h3>
<div class="jb51code"><pre class="brush:bash;">docker network disconnect 网络名称 容器名称
</pre></div>
<p class="maodian"><a name="_lab2_0_4"></a></p><h3>5、为容器重新指定网络</h3>
<div class="jb51code"><pre class="brush:bash;">docker network connect 网络名称 容器名称
</pre></div>
<p class="maodian"><a name="_lab2_0_5"></a></p><h3>6、为容器重新指定网络和ip</h3>
<div class="jb51code"><pre class="brush:bash;"> docker network connect网络名称 容器名称 --ip 192.168.252.10
</pre></div>
<p class="maodian"><a name="_label1"></a></p><h2>总结</h2>
<p>以上为个人经验,希望能给大家一个参考,也希望大家多多支持琼殿技术社区。</p>
頁: [1]
查看完整版本: docker容器指定主机同网段方式