Docker网络管理

来源:互联网 发布:医疗器械软件描述范例 编辑:程序博客网 时间:2024/06/05 06:04

前言

目前管理docker环境在网络层面亟需解决的问题,1、宿主机上每个容器的IP固定问题;2、不同宿主机上docker容器网络互通。

一、容器IP固定

1.1 新网络环境的IP固定

所谓新网络环境,是指在宿主机上还未部署docker容器,在创建容器之初就为容器固定住IP。由于docker网络管理是使用默认的‘NAME=bridge’,并在创建容器时自动分配IP地址,这样给docker管理带来的麻烦是:当因故重启容器或重启宿主机时,宿主机上分配给全部容器的IP就会刷新;

为了便于管理,SA就需要创建‘NAME=xxxx’的新网络。

  1. docker network create --driver bridge --gateway 192.168.2.254 --subnet 192.168.2.0/24 new_net_0

    上面这条命令即创建一个‘NAME=gengmei0’的新网络

  2. docker run -d --name test-network -h test-network --network new_net_0 --ip 192.168.2.1 image_name

    上面这条命令在创建容器之初就为容器分配了固定IP,这样即使重启容器或是重启宿主机也不会影响到容器集群的IP变化


上述两条就能实现容器IP固定的问题,当时应当注意,即使使用标志‘–network & --ip’指定了网络,但是还有是有docker0网卡存在的。因此,若想实现跨主机间的容器通信,SA还需要注意在/etc/default/docker里面指定DOCKER_OPTS的‘–bip’标志的值与其它主机上相同标志的值不同。


1.2 旧网络环境的IP固定

所谓旧网络环境,是指宿主机上已部署了大量的容器,不便于重新创建容器,若强行使用上一节的方法,便是徒增管理难度。好在docker官方提供了docker network connect命令,解决了复杂容器集群中IP固定的问题。

  1. docker network create --driver bridge --gateway 192.168.3.254 --subnet 192.168.3.0/24new_net_0

    创建‘NAME=new_net_0’的网路

  2. docker network connectnew_net_0 --ip 192.168.3.34 conntainer-id

    将IP为192.168.2.34的容器containerid添加到new_net_0网络中


二、跨主机容器网络互通

1.1 flannel docker 网络管理

如上图所示,若想打通容器到容器之间的网络,就需要先打通路由;启动flannel服务后,flannel自动分配一个网关,宿主机A上的容器到宿主机B上容器的数据包先通过宿主机B上flannel的网关,再由宿主机B内部路由实现通信。

但是我们希望数据包直接到达宿主机B上容器内,因此我们需要做的有:1、宿主机内部路由,保留flannel网关到docker0网关(影响这条路由通信的路由务必删除);2、宿主机flannel网关“IP ADDR”-“MAC”对应关系,改为docker容器的IP段与flannel网卡MAC的对应关系。

          内部路由处理

  • 删除影响flannel网卡与docker0设备通信的路由

    route del -net 172.16.0.0 netmask 255.240.0.0 gw 10.172.183.247 dev eth0

    vim /etc/network/interface #注释掉相关路由项

    外部路由处理

    ./etcdctl ls /coreos.com/network/subnets #找到原flannel网卡的IP信息;./etcdctl get /coreos.com/network/subnets/172.16.95.0-24 #获取IP-MAC键值信息

    ./etcdctl set /coreos.com/network/subnets/172.16.65.0-24 '{"PublicIP":"124.16.23.152","BackendType":"vxlan","BackendData":{"VtepMAC":"4a:6e:6d:54:7f:9f"}}' #将原键值信息改为docker容器IP段与MAC的键值信息

    ./etcdctl rm /coreos.com/network/subnets/172.16.95.0-24 #删除原键值信息


参考文献:

  1. DockOne技术分享 http://dockone.io/article/618





0 0
原创粉丝点击