相关文章推荐
自信的小狗  ·  中华人民共和国司法部·  1 月前    · 
乐观的芒果  ·  Serverless ...·  1 年前    · 

docker配置网卡使宿主机和容器ip处于同一网段

docker配置网卡使宿主机和容器ip处于同一网段_51CTO博客_docker容器和主机同网段


docker配置网卡使宿主机和容器ip处于同一网段
原创
宏睿时空 2021-06-25 17:29:03©著作权
文章标签 网络模式 文章分类 代码人生 阅读数 8845
首先讲一下 docker的网络模式:
我们使用docker run创建容器时,可以使用--net选项指定容器的网络模式,docker一共有4中网络模式:
1:bridge模式,--net=bridge(默认)。
这是dokcer网络的默认设置。安装完docker,系统会自动添加一个供docker使用的网桥docker0,我们创建一个新的容器时,容器通过DHCP获取一个与docker0同网段的IP地址。并默认连接到docker0网桥,以此实现容器与宿主机的网络互通。如下:
2:host模式,--net=host。
这个模式下创建出来的容器,将不拥有自己独立的Network Namespace,即没有独立的网络环境。它使用宿主机的ip和端口。
3:container模式,--net=container:NAME_or_ID。
这个模式就是指定一个已有的容器,共享该容器的IP和端口。除了网络方面两个容器共享,其他的如文件系统,进程等还是隔离开的。
4:none模式,--net=none。
这个模式下,dokcer不为容器进行任何网络配置。需要我们自己为容器添加网卡,配置IP。
因此,若想使用pipework配置docker容器的ip地址,必须要在none模式下才可以


以下是几种分配IP的方式:
一. maclvan
1、创建自定义网络
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 mynet

  • 1.


2、创建固定IP容器
docker run -itd --name test --net mynet --ip 192.168.1.101 centos /bin/bash

  • 1.


3、macvlan 是 Linux kernel 支持的新特性,支持的版本有 v3.9-3.19 和 4.0+,比较稳定的版本推荐 4.0+。它一般是以内核模块的形式存在,我们可以通过以下方法判断当前系统是否支持:
modprobe macvlan
lsmod | grep macvlan


二、pipework

本文讲的是Docker使用自定义网桥docker,并且自定义容器的ip地址。 Docker 服务默认会创建一个 docker0 网桥,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。 用户也可以指定网桥来连接各个容器。
这种方法docker官网是不推荐的,记录一下这个方法。但是这个方法可以使宿主机和容器在同一个网段通信。
1.Linux桥接设置
设置桥接的思路:
1. 先建立一个br0的虚拟交换机
2. 把物理端口加入到br0设备中
3. 修改br0 和 物理接口的配置文件--保证持久化
一.准备工作
1.下载brctl git [root@tiger ~]# yum install -y bridge-utils git. 2.下载pipework [root@tiger ~]# git clone github.com/jpetazzo/pip 3.拷贝命令到bin下 [root@tiger ~]# cp ~/pipework/pipework /usr/local/bin/

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.



二. 建立虚拟交换机,并把物理接口加入
1.创建网桥 [root@tiger ~]# brctl addbr br0 2.把ens33加入到br0这个网卡中 [root@tiger ~]# brctl addif br0 ens33 3.有关stp协议的 [root@tiger ~]# brctl stp br0 on

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.



三. 修改物理网卡和br0的网卡保证持久化
[root@tiger network-scripts]# pwd /etc/sysconfig/network-scripts [root@tiger network-scripts]# cp ifcfg-ens33 ifcfg-br0 TYPE=Bridge BOOTPROTO=no NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=192.168.3.3 PREFIX=24 GATEWAY=192.168.3.1 DNS1=223.5.5.5 DNS2=8.8.8.8 ens33的网卡 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=no DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME=em1 UUID=06c95b32-c733-2611-a7aa-4d0ec8bd07f6 DEVICE=em1 ONBOOT=yes #IPADDR=192.168.3.3 #PREFIX=24 #GATEWAY=192.168.3.1 #DNS1=223.5.5.5 #DNS2=8.8.8.8 BRIDGE=br0 重启下网卡 [root@tiger network-scripts]# systemctl restart network

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.



四.为容器配置ip
1.开启一个新容器 [root@tiger ~]# docker run -d --privileged --net none --name tiger 5182e46232bf /sbin/init 2.pipework配置网络 [root@tiger ~]# pipework br0 -i ens33 15b022498573 192.168.3.11/24@192.168.3.1 3.进入容器使用,安装ssh便可以本地使用xshell连接容器 [root@tiger ~]# docker exec -it tiger bash

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.





  • 打赏
  • 收藏
  • 评论
  • 分享
  • 举报


上一篇: ERROR in AppModule is not an NgModule No NgModule metadata found for 'AppModule'.
下一篇: 详解第一范式、第二范式、第三范式、BCNF范式文章目录


提问和评论都可以,用心的回复会被更多人看到 评论

相关文章



























发布于 2023-04-21 09:32 ・IP 属地辽宁