Docker实现同IP网段联通

 2023-12-24  阅读 2  评论 0

摘要:最近解决与宿主机同网段通信的问题,写此文章记录一下整个过程。 例如 宿主机A 和宿主机B是网络联通关系,在宿主机A上面创建了多个容器组成集群,但是我希望通过宿主机B也可以访问到宿主机A的容器,当然,你也可能会说,端口映射非常方便,如果我需要的端口比较多,或者着如

Docker实现同IP网段联通

最近解决与宿主机同网段通信的问题,写此文章记录一下整个过程。

例如

宿主机A 和宿主机B是网络联通关系,在宿主机A上面创建了多个容器组成集群,但是我希望通过宿主机B也可以访问到宿主机A的容器,当然,你也可能会说,端口映射非常方便,如果我需要的端口比较多,或者着如果我临时需要增加某些端口,可能设置起来比较麻烦,那么如果我们将宿主机A里面的容器的IP与宿主机的IP在同一个网络,不就可以直接来进行互联互通了么。

1、安装Docker(Linux主机)

安装 Docker

yum install docker

2、 使用pipework为配置独立IP

安装pipework这个工具可以使用一条命令就可以实现更改容器的IP,更准确来说为容器IP添加一个新的网卡。

wget https://github.com/jpetazzo/pipework/archive/master.zip  unzip master.zip   cp pipework-master/pipework /usr/local/bin/  chmod +x /usr/local/bin/pipework

3、编辑IP的配置文件,eh0

编辑默认ip配置文件,eth0或者ens33(不同操作系统,名称不一致,例如我操作的这台机器的名称为ifcfg-ens33)
vim /etc/sysconfig/network-scripts/ifcfg-ens33

输入i进入到编辑模式,将下面的内容复制到文件中

TYPE=Ethernet  PROXY_METHOD=none  BROWSER_ONLY=no  BOOTPROTO=dhcp  DEFROUTE=yes  IPV4_FAILURE_FATAL=no  IPV6INIT=yes  IPV6_AUTOCONF=yes  IPV6_DEFROUTE=yes  IPV6_FAILURE_FATAL=no  IPV6_ADDR_GEN_MODE=stable-privacy  NAME=ens33  UUID=36b40bc6-6775-4e02-8161-e245d0e3892f  DEVICE=ens33  #以下为桥接部分设置  ONBOOT=yes  BRIDGE=br0  PEERDNS=yes  PEERROUTES=yes  IPV6_PEERDNS=yes  IPV6_PEERROUTES=yes

4、创建自定义网桥br0

vim ifcfg-br0

并且将配置内容复制到配置文件中

 DEVICE=br0   BOOTPROTO=static   NM_CINTROLLER=no   ONBOOT=yes   TYPE=Bridge   IPADDR=192.166.6.186.128   NETMASK=255.255.255.0  

重启虚拟机网络服务

systemctl restart network

5、修改docker配置文件,指定网桥

修改docker的配置文件/etc/sysconfig/

vim /etc/sysconfig/docker

修改内容如下

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'  

修改为:

OPTIONS='--selinux-enabled -b=br0'  

修改完之后:

# /etc/sysconfig/docker    # Modify these options if you want to change the way the docker daemon runs  #OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'  OPTIONS='--selinux-enabled -b=br0'  if [ -z "${DOCKER_CERT_PATH}" ]; then    DOCKER_CERT_PATH=/etc/docker  fi    # Do not add registries in this file anymore. Use /etc/containers/registries.conf  # instead. For more information reference the registries.conf(5) man page.    # Location used for temporary files, such as those created by  # docker load and build operations. Default is /var/lib/docker/tmp  # Can be overriden by setting the following environment variable.  # DOCKER_TMPDIR=/var/tmp    # Controls the /etc/cron.daily/docker-logrotate cron job status.  # To disable, uncomment the line below.  # LOGROTATE=false    # docker-latest daemon can be used by starting the docker-latest unitfile.  # To use docker-latest client, uncomment below lines  #DOCKERBINARY=/usr/bin/docker-latest  #DOCKERDBINARY=/usr/bin/dockerd-latest  #DOCKER_CONTAINERD_BINARY=/usr/bin/docker-containerd-latest  #DOCKER_CONTAINERD_SHIM_BINARY=/usr/bin/docker-containerd-shim-latest  other_args='-b br0'    

5、重启Docker服务

systemctl restart docker

6、创建Docker容器实例

docker run -itd --name test1 --net=none centos /bin/bash

–net=none代表容器的网卡都是为空的,需要通过pipework进行自定义指定

7、指定网卡

pipework br0 test1 192.166.6.186.111/24@192.166.6.186.128

8、进入到容器,尝试Ping宿主机和同网段IP是否能够Ping通

# 进入到容器  docker attach test1  # ping 宿主机  ping 192.166.6.186.22  

8.1 修改同网段主机ip

修改主机ip,网段与宿主机A网桥IP段保持一致。设置后,宿主机A,B之间可以互相ping通

# ping 同网段Ip  ping 192.166.6.186.33

到这里,就完成了Docker网络之间的通信。

提示:现在腾讯云新人点击注册然后实名认证后,可以点此一键领取2860元代金券,然后点此进入腾讯云活动页面参加优惠力度非常大的腾讯云3年和5年时长服务器活动,一次性买多年,免得续费贵,这样就可以获得最大的优惠折扣,省钱。

版权声明:xxxxxxxxx;

原文链接:https://lecms.nxtedu.cn/yunzhuji/130720.html

发表评论:

验证码

管理员

  • 内容1196554
  • 积分0
  • 金币0
关于我们
lecms主程序为免费提供使用,使用者不得将本系统应用于任何形式的非法用途,由此产生的一切法律风险,需由使用者自行承担,与本站和开发者无关。一旦使用lecms,表示您即承认您已阅读、理解并同意受此条款的约束,并遵守所有相应法律和法规。
联系方式
电话:
地址:广东省中山市
Email:admin@qq.com
注册登录
注册帐号
登录帐号

Copyright © 2022 LECMS Inc. 保留所有权利。 Powered by LECMS 3.0.3

页面耗时0.0122秒, 内存占用360.66 KB, 访问数据库18次

  • 我要关灯
    我要开灯
  • 客户电话
    lecms

    工作时间:8:00-18:00

    客服电话

    电子邮件

    admin@qq.com

  • 官方微信

    扫码二维码

    获取最新动态

  • 返回顶部