资讯专栏INFORMATION COLUMN

docker容器学习-overlay网络方案

lmxdawn / 2777人阅读

摘要:主要参考每天分钟玩转容器技术博客。如果想学习,请直接参考该博客跨主机网络方案原生的和第三方方案常用的包括和。方案通过及与集成在一起。在上部署支持的组件,使用。查看当前的网络

主要参考每天5分钟玩转docker容器技术博客。
记录下自己的实验过程。
如果想学习,请直接参考该博客http://www.cnblogs.com/CloudMan6/

跨主机网络方案:

docker原生的overlay和macvlan

第三方方案:常用的包括 flannel、weave 和 calico。

方案通过libnetwork及cnm与docker集成在一起。

本文主要来实现overlay跨主机网络。
host1: 192.168.19.120
host2: 192.168.19.121
host3: 192.168.19.122

在host1上部署支持的组件,使用Consul。
在host2和host3上实践跨主机网络。

实施步骤 在host1上部署Consul

我们以容器方式运行Consul:

root@host1:~# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
root@host1:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                            NAMES
f9429634f2d3        progrium/consul     "/bin/start -server ??   28 seconds ago      Up 27 seconds       53/tcp, 53/udp, 8300-8302/tcp, 8400/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp   consul

在virtualbox上将8500端口转发至20003端口
浏览器打开127.0.0.1:20003
virtualbox我不是很熟,选择nat网络后使用的端口转发将8500转发至20003,可能有其他做法,暂时未深究

注册host2和host3到consul数据库

修改host2和host3的docker daemon的配置文件/etc/systemd/system/docker.service.d/10-machine.conf
在ExecStart选项中加上

--cluster-store=consul://192.168.19.120:8500 --cluster-advertise=enp0s3:2376

--cluster-store 指定 consul 的地址。
--cluster-advertise 告知 consul 自己的连接地址。
之后重启docker

systemctl daemon-reload  
systemctl restart docker.service

之后查看consul控制台,发现host2与host3自动注册到了Consul数据库中。

创建overlay网络

在host2中创建overlay网络

root@host2:~# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
4504cf2b3c21        bridge              bridge              local
edf7614b9aef        host                host                local
7441ee592779        none                null                local
root@host2:~# docker network create -d overlay ov_net1
472b8d3a3b9353328ad08a5bbf456599ffc3f43892806810bbfd2fd6a49b5159
root@host2:~# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
4504cf2b3c21        bridge              bridge              local
edf7614b9aef        host                host                local
7441ee592779        none                null                local
472b8d3a3b93        ov_net1             overlay             global

-d overlay: 指定driver为overlay
可以注意到ov_net1的scope为global

在host3上查看docker网络

root@host3:~# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3f19c8a4ae83        bridge              bridge              local
c0cc6418f84f        host                host                local
55a505077100        none                null                local
472b8d3a3b93        ov_net1             overlay             global

在host3中也看到了ov_net1网络

是由于host2将信息存入了consul中,host3从consul中获取到了该网络。

查看该网络的详细信息

使用docker network inspect命令

root@host3:~# docker network inspect ov_net1
[
    {
        "Name": "ov_net1",
        "Id": "472b8d3a3b9353328ad08a5bbf456599ffc3f43892806810bbfd2fd6a49b5159",
        "Created": "2018-05-12T23:46:20.332476055+08:00",
        "Scope": "global",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.0.0.0/24",
                    "Gateway": "10.0.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
在overlay网络中运行容器

在host2上创建容器

root@host2:~# docker run -itd --name bbox1 --network ov_net1 busybox
afc025f1cab1d0bf9ac674e42c8b02a6066ccae23fa904d4b984827483b0de4b
root@host2:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
afc025f1cab1        busybox             "sh"                4 seconds ago       Up 2 seconds                            bbox1

也在host3上创建容器

root@host3:~# docker run -itd --name bbox2 --network ov_net1 busybox
63a900ce909bfd53127693efa00739b77f437b5cf91b87c7d55279222ee782b5
root@host3:~# docker ps
 CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
63a900ce909b        busybox             "sh"                About a minute ago   Up About a minute    

发现两台机器上的这两个容器可以互相ping通,且可以直接通过主机名访问通。也可以访问互联网。

root@host2:~# docker exec -it bbox1 ping -c 2 bbox2
PING bbox2 (10.0.0.3): 56 data bytes
64 bytes from 10.0.0.3: seq=0 ttl=64 time=3.092 ms
64 bytes from 10.0.0.3: seq=1 ttl=64 time=1.215 ms

--- bbox2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 1.215/2.153/3.092 ms
root@host2:~# docker exec -it bbox1 ping -c 4 www.baidu.com
PING www.baidu.com (115.239.211.112): 56 data bytes
64 bytes from 115.239.211.112: seq=0 ttl=53 time=12.352 ms
64 bytes from 115.239.211.112: seq=1 ttl=53 time=15.298 ms
64 bytes from 115.239.211.112: seq=2 ttl=53 time=14.399 ms
64 bytes from 115.239.211.112: seq=3 ttl=53 time=20.381 ms

--- www.baidu.com ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 12.352/15.607/20.381 ms

查看当前的docker网络

root@host2:~# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
33088197519e        bridge              bridge              local
4fd73b05e4d2        docker_gwbridge     bridge              local
edf7614b9aef        host                host                local
7441ee592779        none                null                local
472b8d3a3b93        ov_net1             overlay             global

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27313.html

相关文章

  • Docker Swarm介绍

    摘要:后续将其他节点加入集群都会用到这个值将节点加入集群查看节点信息相关命令创建服务更新服务删除服务减少服务实例增加服务实例查看所有服务查看服务的容器状态查看服务的详细信息。前言本篇是Docker第十三篇,Docker的使用至此就介绍完成,接下来继续Kubernetes。Docker系列文章:为什么要学习DockerDocker基本概念Docker镜像基本原理Docker容器数据卷Dockerfi...

    番茄西红柿 评论0 收藏2637
  • 一种生产环境Docker Overlay Network的配置方案

    摘要:原文地址介绍一种生产环境的配置方案。概要先讲一下生产环境中的问题有多个,希望能够通过连接起来。因此生产环境中会同时存在无状态应用利用创建的。不会帮你检查名称冲突的情况,如果名称冲突了那么会得到错误的结果。 原文地址 介绍一种生产环境Docker overlay network的配置方案。 概要 先讲一下生产环境中的问题: 有多个Docker host,希望能够通过Docker swa...

    CoderStudy 评论0 收藏0
  • Prometehus自动发现Docker Swarm Overlay网络中的容器

    摘要:原文地址介绍如何使用的机制,自动发现并抓取网络中的容器所提供的指标。我们需要一种动态发现容器的方法。使用的机制,半自动的发现容器。文章最开始说到的半自动就是这个意思,我们得事先知道记录有哪些,然后让去发现这些记录背后对应的容器有哪些。 原文地址 介绍如何使用Prometheus的dns service discovery机制,自动发现并抓取Docker swarm overlay网络中...

    wangtdgoodluck 评论0 收藏0
  • Docker overlay 网络搭建

    摘要:快速开始跨主机网络方案原生第三方方案之前介绍了搭建集群,所以在此直接选用自带的方案来做,和完美结合。直接检查网络列表发现已经在其中。 Docker overlay 网络搭建 Overlay网络是指通过在现有网络上叠加一个软件定义的逻辑网络,最大程度的保留原有网络,通过定义其上的逻辑网络,实现业务逻辑,解决原有数据中心的网络问题。 快速开始 Docker跨主机网络方案 docker ...

    Xufc 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<