Docker overlay 网络搭建的方法

Overlay网络是指通过在现有网络上叠加一个软件定义的逻辑网络,最大程度的保留原有网络,通过定义其上的逻辑网络,实现业务逻辑,解决原有数据中心的网络问题。

快速开始

Docker跨主机网络方案

docker 原生

  1. overlay
  2. macvlan

第三方方案

  1. flannel
  2. weave
  3. calico

之前介绍了Consul搭建集群,所以在此直接选用docker自带的overlay方案来做,和Consul完美结合。

环境准备

参考之前的一篇《Consul 搭建集群》准备三台虚机。

ip
n1 172.20.20.10
n2 172.20.20.11
n3 172.20.20.12

在这三台虚机上启动consul并创建集群

n1

[root@n1 vagrant]# consul agent -server -bootstrap-expect 3 -data-dir /etc/consul.d -node=node1 -bind=172.20.20.10 -ui -client 0.0.0.0

n2

[root@n2 vagrant]# consul agent -server -bootstrap-expect 3 -data-dir /etc/consul.d -node=node2 -bind=172.20.20.11 -ui -client 0.0.0.0 -join 172.20.20.10

n3

[root@n3 vagrant]# consul agent -server -bootstrap-expect 3 -data-dir /etc/consul.d -node=node3 -bind=172.20.20.12 -ui -client 0.0.0.0 -join 172.20.20.10
[root@n1 vagrant]# consul members
Node  Address      Status Type  Build Protocol DC  Segment
node1 172.20.20.10:8301 alive  server 1.1.0 2     dc1 <all>
node2 172.20.20.11:8301 alive  server 1.1.0 2     dc1 <all>
node3 172.20.20.12:8301 alive  server 1.1.0 2     dc1 <all>

配置 docker

登录n1

修改 /etc/sysconfig/docker-network

# /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS=--cluster-store=consul://172.20.20.10:8500 --cluster-advertise=172.20.20.10:2376

其中ip部分为consul容器节点的ip。

在命令行中输入 docker network create -d overlay myoverlay创建一个名为myoverlay的网络,并用 docker network ls检查docker网络列表

[root@n1 sysconfig]# docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
5a8df7650e34    bridge       bridge       local
8e574df4fb90    docker_gwbridge   bridge       local
d69aab5b2621    host        host        local
7301c62bca4d    none        null        local
[root@n1 sysconfig]# docker network create -d overlay myoverlay
36feac75fb49edcf8920ed39109424b833501268942fb563708aa306fccfb15c
[root@n1 sysconfig]# docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
5a8df7650e34    bridge       bridge       local
8e574df4fb90    docker_gwbridge   bridge       local
d69aab5b2621    host        host        local
36feac75fb49    myoverlay      overlay       global
7301c62bca4d    none        null        local

登录 n2

修改 /etc/sysconfig/docker-network

# /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS=--cluster-store=consul://172.20.20.11:8500 --cluster-advertise=172.20.20.11:2376

这里不用再次新建立myoverlay网络了,因为他们是一个集群。直接检查网络列表

[root@n2 vagrant]# docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
9f2b7d40a69f    bridge       bridge       local
1d9ee9546c81    docker_gwbridge   bridge       local
e1f72fa7710c    host        host        local
36feac75fb49    myoverlay      overlay       global
372109bb13bc    none        null        local

发现myoverlay已经在其中。

同理操作n3

[root@n3 vagrant]# docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
14cf16d37c9b    bridge       bridge       local
ca426545fedb    docker_gwbridge   bridge       local
b57d2f555fa2    host        host        local
36feac75fb49    myoverlay      overlay       global
fcb5da0380e4    none        null        local

启动容器 验证overlay网络

登录n1以myoverlay启动一个busybox的容器

[root@n1 sysconfig]# docker run --network myoverlay busybox

查看busybox容器详情,在最底部有网络相关的信息

"Networks": {
        "myoverlay": {
          "IPAMConfig": null,
          "Links": null,
          "Aliases": [
            "e7d558b35607"
          ],
          "NetworkID": "36feac75fb49edcf8920ed39109424b833501268942fb563708aa306fccfb15c",
          "EndpointID": "6b1c975847b506a151940893e3ac189a7053cb34dda4ec2b5797c93f6eeb3534",
          "Gateway": "",
          "IPAddress": "10.0.0.2",
          "IPPrefixLen": 24,
          "IPv6Gateway": "",
          "GlobalIPv6Address": "",
          "GlobalIPv6PrefixLen": 0,
          "MacAddress": "02:42:0a:00:00:02"
        }
      }

可以看到网络是myoverlay ip 10.0.0.2

登录n2myoverlay启动一个busybox的容器

[root@n2 sysconfig]# docker run --network myoverlay busybox

查看busybox容器详情,在最底部有网络相关的信息

"Networks": {
        "myoverlay": {
          "IPAMConfig": null,
          "Links": null,
          "Aliases": [
            "f673ccb5ab32"
          ],
          "NetworkID": "36feac75fb49edcf8920ed39109424b833501268942fb563708aa306fccfb15c",
          "EndpointID": "39f8e9e098ce3faf039aa60e275ec90428f86c6378f5b4c54d8682741e71673f",
          "Gateway": "",
          "IPAddress": "10.0.0.3",
          "IPPrefixLen": 24,
          "IPv6Gateway": "",
          "GlobalIPv6Address": "",
          "GlobalIPv6PrefixLen": 0,
          "MacAddress": "02:42:0a:00:00:03"
        }
      }

这个busybox的ip为10.0.0.3

进入容器,ping 10.0.0.2

[root@n2 vagrant]# docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS                         NAMES
f673ccb5ab32    busybox       "sh"           2 minutes ago    Up 2 minutes                                objective_pare
[root@n2 vagrant]# docker exec -ti f673ccb5ab32 /sh
/ # ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: seq=0 ttl=64 time=1.309 ms
64 bytes from 10.0.0.2: seq=1 ttl=64 time=0.535 ms
64 bytes from 10.0.0.2: seq=2 ttl=64 time=1.061 ms
64 bytes from 10.0.0.2: seq=3 ttl=64 time=0.764 ms
^C
--- 10.0.0.2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.535/0.917/1.309 ms

ping 是通的, overlay 网络搭建成功!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • docker中搭建overlay 网络实验环境

    为支持容器跨主机通信,Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络.VxLAN 可将二层数据封装到 UDP 进行传输,VxLAN 提供与 VLAN 相同的以太网二层服务,但是拥有更强的扩展性和灵活性.有关 VxLAN 更详细的内容可参考 CloudMan 在<每天5分钟玩转 OpenStack>中的相关章节. Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息,包括 Network.Endp

  • Docker overlay 网络搭建的方法

    Overlay网络是指通过在现有网络上叠加一个软件定义的逻辑网络,最大程度的保留原有网络,通过定义其上的逻辑网络,实现业务逻辑,解决原有数据中心的网络问题. 快速开始 Docker跨主机网络方案 docker 原生 overlay macvlan 第三方方案 flannel weave calico 之前介绍了Consul搭建集群,所以在此直接选用docker自带的overlay方案来做,和Consul完美结合. 环境准备 参考之前的一篇<Consul 搭建集群>准备三台虚机. ip n1 1

  • docker registry私服搭建的方法

    目前为止,docker官方的registry镜像分为两个版本,v2和v2以前的版本,我管它叫v1,v1使用python编写的,之后的v2用的go语言,而且它们的API也不一样,本文将分别搭建基于SSL和登录认证的以上两个版本的docker私服. registry(v2) 搭建环境:172.16.71.52 (contos7,docker1.8) 首先下载镜像 docker pull resigtry:2 创建证书 mkdir -p certs && openssl req \ -newke

  • 记一次Docker生产环境搭建的方法

    服务器配置: 服务器使用的是阿里云ECS标准型,普通的centos7和docker环境镜像. 搭建docker镜像加速: docker镜像源在docker.io在国外速度很慢,所以配置下加速,daocloud加速地址 选择linux加速配置命令,复制粘贴执行,直接执行可能有个逗号错误,我是碰到了.解决方法是修改daemon.json文件: cd /etc/docker ls cat daemon.json vi daemon.json 把尾部的逗号去掉就行vi编辑器 i进编辑模式 去掉然后 es

  • Docker 配置网络使用bridge网络的方法

    就网络而言,桥接网络(bridge network,也叫网桥)是一种链路层设备,用于转发网段之间的流量. bridge 可以是硬件设备或在主机内核中运行的软件设备. 对 Docker 而言,桥接网络使用允许容器连接到同一个桥接网络来通信的软件网桥,同时提供与未连接到该桥接网络的容器的隔离.Docker bridge 驱动程序自动在主机中安装规则使不同桥接网络上的容器不能直接相互通信. 桥接网络用于在同一个 Docker 守护进程上运行的容器通信.对于不同 Docker 守护进程的容器,可以在操作

  • 搭建docker内网私服的方法(docker-registry with nginx&ssl on centos)

    本文介绍了搭建docker内网私服的方法,分享给大家.具体如下: 主要思路: 1. Docker Registry 说明 关于如何创建和使用本地仓库,其实已经有很多文章介绍了.因为docker技术正处于发展和完善阶段,所以有些文章要么内容已经过时,要么给出了错误的配置,导致无法正常创建仓库.本文记录的是个人完整的搭建过程,docker version为1.1.2. 官方提供了Docker Hub网站来作为一个公开的集中仓库.然而,本地访问Docker Hub速度往往很慢,并且很多时候我们需要一个

  • Docker使用Portainer搭建可视化界面的方法

    Portainer介绍 Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容器控制台操作.Swarm集群和服务等集中管理和操作.登录用户管理和控制等功能.功能十分全面,基本能满足中小型单位对容器管理的全部需求. 下载Portainer镜像 # 查询当前有哪些Portainer镜像 docker search portainer 上图就是查询出来的有下载量的portainer镜像,我

  • docker实现redis集群搭建的方法步骤

    目录 一.创建redis docker基础镜像 二.制作redis节点镜像 三.运行redis集群 引用: 摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Redis的分布式解决方案,它解决了redis单机中心化的问题,分布式数据库--首要解决把整个数据集按照分区规则映射到多个节点的问题. 这边就需要知道分区规则--哈希分区规则.Redis Clus

  • Docker容器跨主机通信overlay网络的解决方案

    目录 一.Docker主机间容器通信的解决方案 二.Docker Overlay Network 三.使用键值存储搭建Docker主机集群 4.1 系统环境 4.2 安装Consul 4.3 节点配置Dockre守护进程连接Consul 4.4 查看consul 中的节点信息 4.5 创建overlay网络 4.6 使用overlay网络启动容器 一.Docker主机间容器通信的解决方案 Docker网络驱动 Overlay: 基于VXLAN封装实现Docker原生Overlay网络 Macvl

  • Docker为网络bridge模式指定容器ip的方法

    前言 众所周知bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace.设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上.下面来看看Docker为网络bridge模式指定容器ip的方法. 实现方法 如果只是简单创建一个bridge模式的网络是无法给容器指定ip的 [root@vultrvpn conf.d]# docker network create --driver bridge wordpress_net ad1ff3d972

随机推荐