Docker Overlay 部署条件

要想使用Docker原生Overlay网络,需要满足以下任意条件:

1、Docker运行在Swarm模式

2、使用键值存储的Docker主机集群

本次部署使用键值存储的Docker主机集群,需要满足以下条件:

1. 集群中主机连接到键值存储,Docker支持Consul、Etcd和Zookeeper;

2. 集群中主机运行一个Docker守护进程;

3. 集群中主机必须具有唯一的主机名,因为键值存储使用主机名来标识集群成员;

4. 集群中Linux主机内核版本3.12+,支持VXLAN数据包处理,否则可能无法通信。

5. Docker通过overlay网络驱动程序支持多主机容器网络通信。


内核版本升级方案https://www.cnblogs.com/xiangsikai/p/9899844.html


Docker Overlay 应用部署

  • 节点1/键值存储:192.168.1.77
  • 节点2:192.168.1.78

节点1节点2操作

# 修改两个测试端主机名,并退出终端生效
hostname overlay-01
hostname overlay-02

一、部署Consul并运行服务

1.1 节点1操作:下载Consul二进制包并启动

  • 百度云:https://pan.baidu.com/s/1MsVJtYUDJ8LzBqVxwmdc8A
  • 密码:g5jd
  • 命令行下载:wget https://releases.hashicorp.com/consul/0.9.2/consul_0.9.2_linux_amd64.zip
# 1、解压Consul压缩包
unzip consul_0.9.2_linux_amd64.zip # 2、将consul移动到/bin/目录下并添加执行权限
mv consul /usr/bin/consul && chmod +x /usr/bin/consul # 3、启动consul并指定本机IP
nohup consul agent -server -bootstrap -ui -data-dir /var/lib/consul -client=192.168.1.77 -bind=192.168.1.77 &>/var/log/consul.log &

1.2 节点1操作:查看日志启动情况

tail /var/log/consul.log -f
2018/10/29 15:17:39 [INFO] agent: Started HTTP server on 192.168.1.77:8500

2018/10/29 15:17:45 [WARN] raft: Heartbeat timeout from "" reached, starting election

2018/10/29 15:17:45 [INFO] raft: Node at 192.168.1.77:8300 [Candidate] entering Candidate state in term 2

2018/10/29 15:17:45 [INFO] raft: Election won. Tally: 1

2018/10/29 15:17:45 [INFO] raft: Node at 192.168.1.77:8300 [Leader] entering Leader state

2018/10/29 15:17:45 [INFO] consul: cluster leadership acquired

2018/10/29 15:17:45 [INFO] consul: New leader elected: localhost.localdomain

2018/10/29 15:17:45 [INFO] consul: member 'localhost.localdomain' joined, marking health alive

2018/10/29 15:17:45 [INFO] agent: Synced node info

==> Newer Consul version available: 1.3.0 (currently running: 0.9.2)

日志


二、部署Docker配置文件

2.1 节点1操作:配置Docker守护进程连接Consul

# 添加ExecStart如果已有则注释添加下面案例

vim /lib/systemd/system/docker.service

[Service]
ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store consul://192.168.1.77:8500 --cluster-advertise 192.168.1.77:2375
# 为docker监听
tcp://0.0.0.0:2375

注解

2.2 节点1操作:重启docker服务

# 1.修改配置文件重新加载
systemctl daemon-reload # 2.重启docker服务
systemctl restart docker

2.3 节点2操作:修改配置文件

vim /lib/systemd/system/docker.service

[Service]
ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store consul://192.168.1.77:8500 --cluster-advertise 192.168.1.78:2375
# 通告信息需要改为本机IP
--cluster-advertise 192.168.1.78:2375

注解

 2.4 节点2操作:重启docker服务

# 1.修改配置文件重新加载
systemctl daemon-reload # 2.重启docker服务
systemctl restart docker

三、创建Overlay网络

3.1 节点1操作:创建overlay网络

# 创建网络 -d 指定网络驱动程序为 overlay multi_host
docker network create -d overlay multi_host

注:再任意节点创建后会通过overlay同步到已连接的节点下创建网络。

命令:docker network ls
4abe591cdf50 multi_host overlay global

查看本地网络

命令:docker network inspect ID/KEY

[

{

"Name": "multi_host",

"Id": "4abe591cdf504c1f15f563e4c8516c22b7d037268e6975e9491a417d2da83e8a",

"Created": "2018-11-01T10:42:00.117452769+08:00",

"Scope": "global",

# 驱动为overlay

"Driver": "overlay",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": {},

# 网段信息

"Config": [

{

"Subnet": "10.0.0.0/24",

"Gateway": "10.0.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Containers": {},

"Options": {},

"Labels": {}

}

]

查看网络属性信息


四、测试通信

4.1 节点1与2操作:运行测试容器

# 指定连接网络类型 --net=multi_host
docker run -it --net=multi_host busybox

注:如果报错则可在配置文件中ExecStart添加加如下参数

--default-runtime=docker-runc
建议添加 多个参数

--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \

--default-runtime=docker-runc \

--exec-opt native.cgroupdriver=systemd \

--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \

--init-path=/usr/libexec/docker/docker-init-current \

--seccomp-profile=/etc/docker/seccomp.json \

如下

ExecStart=/usr/bin/dockerd-current -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store consul://192.168.1.77:8500 --cluster-advertise 192.168.1.78:2375 --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json

其他参数

4.2 节点1与2操作:测试通信

overlay-01

/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:0A:00:00:03
inet addr:10.0.0.3 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::42:aff:fe00:3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:906 (906.0 B) TX bytes:586 (586.0 B)

overlay-02

/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:0A:00:00:02
inet addr:10.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::42:aff:fe00:2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1136 (1.1 KiB) TX bytes:656 (656.0 B)

测试是否通信 overlay-02 ping overlay-01

/ # ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3): 56 data bytes
64 bytes from 10.0.0.3: seq=0 ttl=64 time=0.960 ms
64 bytes from 10.0.0.3: seq=1 ttl=64 time=0.355 m

注:通信成功。

Docker Overlay 应用部署的更多相关文章

  1. Docker swarm 实战-部署wordpress

    Docker swarm 实战-部署wordpress 创建一个overlay的网络 docker network create -d overlay demo 6imq8da3vcwvj2n499k ...

  2. 在Docker Swarm上部署Apache Storm:第2部分

    [编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...

  3. 在Docker Swarm上部署Apache Storm:第1部分

    [编者按]本文来自 Baqend Tech Blog,描述了如何在 Docker Swarm,而不是在虚拟机上部署和调配Apache Storm集群.文章系国内 ITOM 管理平台 OneAPM 编译 ...

  4. Docker集群部署SpringCloud应用

    整体架构 docker环境准备 # linux下的安装,自行百度 # windows docker toolbox下载地址 https://download.docker.com/win/stable ...

  5. Docker Swarm从部署到基本操作

    关于Docker Swarm Docker Swarm由两部分组成: Docker集群:将一个或多个Docker节点组织起来,用户就能以集群的方式进行管理: 应用编排:有一套API用来部署和管理容器: ...

  6. 34. docker swarm Dockerstack 部署 wordpress

    1. 查看 docker compose    depoly 语法 官网地址 : https://docs.docker.com/compose/compose-file/#deploy ENDPOI ...

  7. 【Network】Calico, Flannel, Weave and Docker Overlay Network 各种网络模型之间的区别

    From the previous posts, I have analysed 4 different Docker multi-host network solutions - Calico, F ...

  8. 将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定

    1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...

  9. 基于Jenkins,docker实现自动化部署(持续交互)

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

随机推荐

  1. JS 使用const声明常量的本质(很多人都有误解)

    在我们使用const声明常量时,总认为值一旦声明就不可改变,其实是有误解的: 刚在看ES6标准文档时,仔细阅读了const的解析,恍然大悟的感觉,分享给大家. 本质 const实际上保证的,并不是变量 ...

  2. Spring的事务管理基础知识

    1.数据库事务基础知识     1)数据库事务有严格的定义,它必须同时满足4个特性:原子性(Atomic).一致性(Consistency).隔离性(Isolation)和持久性(Durability ...

  3. iOS - Harpy版本更新工具兼容版本第三方库

    Harpy(兼容版) git地址:https://github.com/yangchao0033/Harpy ###(iOS5-9适配版本,基于ArtSabintsev/Harpy v3.4.5) 提 ...

  4. Spring AOP的简单示例

    配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://w ...

  5. linux安装jdk和tomcat命令

    1.linux centos6.5 安装jdk1.在/usr/local/src目录下,创建java文件夹,拷贝jdk安装包到/usr/local/src/java下面:cd /usr/local/s ...

  6. js 判断当前操作系统是ios还是android还是电脑端

    js判断客户端是否是IOS或者是Android //如果返回true 则说明是Android function is_weixin() { var ua = window.navigator.user ...

  7. redis数据库通过dump.rdb文件恢复数据库或者数据库迁移

    环境:centos7.2软件:redis-3.2.10(yum安装) 情景一:公司之前的redis没有开启aof模式,一直是rdb模式,但是数据又非常重要,数据一点也不能丢失,所以需要开启aof,但是 ...

  8. AngularJS资源合集[备忘]【申明:来源于网络】

    AngularJS资源合集[备忘][申明:来源于网络] 地址:http://blog.csdn.net/allgis/article/details/44646597

  9. day18 十八、random、shutil、shevle、logging

    一.random 模块:随机数 1. import random # .[,]整数 random randint(,) print(random.randint(, )) # 随机产生[,]中的一个数 ...

  10. 基于 ASP.NET Core 2.1 的 Razor Class Library 实现自定义错误页面的公用类库

    注意:文中使用的是 razor pages ,建议使用 razor views ,使用 razor pages 有一个小坑,razor pages 会用到 {page} 路由参数,如果应用中也用到了这 ...