暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

docker 主机连接两个网络,桥接网络上网(双网卡)

原创 szrsu 2022-10-12
6884

docker 主机可以连接自定义的网络,又可以连接到宿主机的bridge网络,进行外网访问,相当于双网卡,设置如下:

(1)定义自定义网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

(2)运行两个centos容器

docker run --privileged --cap-add SYS_ADMIN -e container=docker --name centos_master --net mynet -d centos:7.6.1810 /usr/sbin/init
docker run --privileged --cap-add SYS_ADMIN -e container=docker --name centos_slave --net mynet -d centos:7.6.1810 /usr/sbin/init


复制

这个命令用来建立一个CENTOS的容器。
–privileged 指定容器是否是特权容器。这里开启特权模式。
–cap-add SYS_ADMIN 添加系统的权限。不然,系统很多功能都用不了的。
-e container=docker 设置容器的类型。
/usr/sbin/init 初始容器里的CENTOS。
以上的参数是必需的。不然,建立的CENTOS容器不能正常使用和互动。
如果没有初始化和特权等等的开关,就不能使用systemctl。所以,以上的开关和设置是一样不能少的。

查看mynet网络:docker network inspect mynet

"Containers": {
            "a7c5ac274402c817af76b0c32cded901a0625755c957a4ed8487a81aa9aa172a": {
                "Name": "centos_slave",
                "EndpointID": "c677d37936bd0d7c107d5d5f7a074cebd90900873df531f7eaaa8c8f3d1a85a9",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "c6e689818ca21969265e620261f0b0e07f19bc524847adaee170ff03e63b469c": {
                "Name": "centos_master",
                "EndpointID": "5848c8cfa67cef6ed143465b7a34b68660453a1cac696ed40e4697d3c0b5f69f",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            }
        },


复制

(3)自定义网络加入bridge

由于要连接外网进行下载,故将my_centos_master和my_centos_slave加入到bridge。

docker network connect bridge centos_master
docker network connect bridge centos_slave

查看bridge网络:docker network inspect bridge

"Containers": {
            "a7c5ac274402c817af76b0c32cded901a0625755c957a4ed8487a81aa9aa172a": {
                "Name": "centos_slave",
                "EndpointID": "e44bcad2341c1fce318519a117fa5cd8e40b00a1d5f3db2911922c6760e729c6",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            },
            "c6e689818ca21969265e620261f0b0e07f19bc524847adaee170ff03e63b469c": {
                "Name": "centos_master",
                "EndpointID": "c14aca283413d2d1b7e3cea7017dda2c9f5f7f11943469ef9652172220bd9b13",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },


复制

此时,centos_master和centos_slave既在bridge网络中,又在mynet网络中。

(4)查看容器网络ip

[root@xxx /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.2  netmask 255.255.0.0  broadcast 192.168.255.255
        ether 02:42:c0:a8:00:02  txqueuelen 0  (Ethernet)
        RX packets 8  bytes 656 (656.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6  bytes 252 (252.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 11489  bytes 29739901 (28.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11438  bytes 940859 (918.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 128  bytes 11208 (10.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 128  bytes 11208 (10.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
	

复制

从上面网络信息可以看到,两张网卡,一个是自定义网络,一个是bridg网络

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论