群晖Docker开启局域网桥接

前言

群晖Docker默认网络模式是bridge和host,无论哪一种,都可能会出现端口冲突无法使用的问题,比如群晖已经占用了888端口,那么容器就没办法继续使用888端口了,通过手动添加第三种bridge-host模式,可以把Docker容器模拟成一台新的客户端一样,容器会有自己的内网IP地址,端口独立分配,不会和群晖已占用的端口冲突。

三种网络方式对比

  • Bridge:docker容器内部虚拟网桥,容器内部172.17.0.X网段,无法获取主机网络ip,访问容器需要映射端口,并且不能和主机占用端口冲突,不映射端口无法使用。
  • Host:容器绑定到主机网卡使用主机的ip并且不能和主机占用端口冲突,使用哪些端口自动占用。
  • bridge-host:通过主机的虚拟网卡来创建虚拟网桥,将容器的网卡绑定到这个直通局域网的虚拟网桥上,它的优点是容器获取到局域网ip,容器ip和群晖主机一个网段,端口1-65535全端口使用 不和主机冲突并且容易ip可手动指定,可以说模式就是把容器都桥接到你群晖所在的局域网

教程开始

打开群晖控制面板——网络——网络界面——管理——Open vSwitch设置

群晖Docker开启局域网桥接

群晖Docker开启局域网桥接

启用Open vSwitch

群晖Docker开启局域网桥接

群晖Docker开启局域网桥接

打开群晖控制面板——终端机和SNMP——启动SSH功能

群晖Docker开启局域网桥接

群晖Docker开启局域网桥接

用putty工具SSH登录进群晖并切换到root账户

//群晖切换root账户
sudo -i

执行创建网络命令,指令根据自己的IP网段修改,我的IP网段为192.168.0.X,网关地址为192.168.0.1,根据自己的需求修改

//切换root权限
sudo -i
//查询群晖网卡名称和IP地址
ip addr
//创建bridge-host网络
docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=ovs_eth0 bridge-host
//做了端口汇聚创建bridge-host网络
docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=ovs_bond0 bridge-host

群晖Docker开启局域网桥接

群晖Docker开启局域网桥接

打开Docker,点击网络,可以看见我们创建的bridge-host

群晖Docker开启局域网桥接

群晖Docker开启局域网桥接

创建容器方法

网络可以在群晖docker面板——网络里面修改

注意:如果创建Docker容器的时候使用bridge-host网络模式,并不手动指定IP的话,默认会从192.168.x.2,192.168.x.3排列下去。
群晖Docker开启局域网桥接

群晖Docker开启局域网桥接

我们也可以手动指定容器的IP

//容器绑定到桥接网卡,并指定ip
--network bridge-host --ip=192.168.0.2
//举例:启动luodaoyi/kms-server映像命名为kms-server并使用bridge-host网络手动分配192.168.0.2IP地址
docker run -itd --restart=always --network bridge-host --ip=192.168.0.2 --name kms-server luodaoyi/kms-server

本文转自http://www.chrno.cn/index.php/docker/19.html

点赞

发表回复

您的电子邮箱地址不会被公开。