使Docker容器拥有可被宿主机以外的机器直接访问的独立IP

我们常用的docker容器都是将ip端口映射到宿主机,通过宿主机IP进行访问。外部无法直接访问容器IP,下面简单介绍下怎么做到局域网内直接访问docker容器IP。


自动化脚本见 https://github.com/liwei128/my_pipework.git,一键运行,so easy


说明如下

一、准备工作

1.首先安装pipework

下载:gitHub地址 https://github.com/jpetazzo/pipework.git

  

文件上传用sftp方式连接,put进行上传      

将pipework文件复制到/usr/bin/目录下,并设置为可执行脚本

cp pipework /usr/bin/

chmod +x /usr/bin/pipework

2.查询我们的网卡名、网卡ip、以及默认网关,后面需要用到

          我的为ens33      172.16.3.217          172.163.3.1



二、开始设置IP

注意:此步骤可能会断开与宿主机的连接,因为网卡ens33的ip发生了变化,建议写成脚本文件.sh的形式执行

1. 删除ens33上面的ip地址

    sudo ip addr del dev ens33 172.16.3.217/24

2. 新建网桥br0,并将ens33网卡桥接到br0

    sudo ip link add link ens33 dev br0 type macvlan mode bridge

3.给网桥br0设置ip (为原ens33上的ip)

    sudo ip addr add 172.16.3.217/24 dev br0

4.启用br0

    sudo ip link set dev br0 up

5.给br0设置默认网关(为上面查询到的默认网关),不然无法访问

    sudo ip route add default via 172.16.3.1 dev br0

6.为docker容器指定IP地址

sudo pipework br0 cmv3-manager 172.16.3.251/[email protected]

sudo  pipework br0 cmv3-mysql 172.16.3.253/[email protected]

说明:br0是第3步新建的网桥名,cmv3-manager和cmv3-mysql是docker容器名,@前面表示你要为该容器设置的IP地 址,@后面为网关地址

这样就将宿主机网卡以及docker容器接入了同一个网桥br0,实现局域网访问容器ip。效果如下

 

三、回滚方案

如果你需要还原成原有的IP配置,只需要这样:

    sudo ip link delete br0

    sudo service network restart

    sudo systemctl restart docker

注意:此步骤可能会断开与宿主机的连接,因为网桥br0被删除了,建议写成脚本文件.sh的形式执行


我们常用的docker容器都是将ip端口映射到宿主机,通过宿主机IP进行访问。外部无法直接访问容器IP,下面简单介绍下怎么做到局域网内直接访问docker容器IP。


自动化脚本见 https://github.com/liwei128/my_pipework.git,一键运行,so easy


说明如下

一、准备工作

1.首先安装pipework

下载:gitHub地址 https://github.com/jpetazzo/pipework.git

  

文件上传用sftp方式连接,put进行上传      

将pipework文件复制到/usr/bin/目录下,并设置为可执行脚本

cp pipework /usr/bin/

chmod +x /usr/bin/pipework

2.查询我们的网卡名、网卡ip、以及默认网关,后面需要用到

          我的为ens33      172.16.3.217          172.163.3.1



二、开始设置IP

注意:此步骤可能会断开与宿主机的连接,因为网卡ens33的ip发生了变化,建议写成脚本文件.sh的形式执行

1. 删除ens33上面的ip地址

    sudo ip addr del dev ens33 172.16.3.217/24

2. 新建网桥br0,并将ens33网卡桥接到br0

    sudo ip link add link ens33 dev br0 type macvlan mode bridge

3.给网桥br0设置ip (为原ens33上的ip)

    sudo ip addr add 172.16.3.217/24 dev br0

4.启用br0

    sudo ip link set dev br0 up

5.给br0设置默认网关(为上面查询到的默认网关),不然无法访问

    sudo ip route add default via 172.16.3.1 dev br0

6.为docker容器指定IP地址

sudo pipework br0 cmv3-manager 172.16.3.251/[email protected]

sudo  pipework br0 cmv3-mysql 172.16.3.253/[email protected]

说明:br0是第3步新建的网桥名,cmv3-manager和cmv3-mysql是docker容器名,@前面表示你要为该容器设置的IP地 址,@后面为网关地址

这样就将宿主机网卡以及docker容器接入了同一个网桥br0,实现局域网访问容器ip。效果如下

 

三、回滚方案

如果你需要还原成原有的IP配置,只需要这样:

    sudo ip link delete br0

    sudo service network restart

    sudo systemctl restart docker

注意:此步骤可能会断开与宿主机的连接,因为网桥br0被删除了,建议写成脚本文件.sh的形式执行


猜你喜欢

转载自blog.csdn.net/kongshuai19900505/article/details/83548117