网络运维管理 探究Docker Stack和可对接网络
关关 2018-08-21 来源 : 阅读 1130 评论 0

摘要:本篇网络运维教程讲解了Docker Stack和可对接网络,希望阅读本篇文章以后大家有所收获,帮助大家对网络运维的理解更加深入。

本篇网络运维教程讲解了Docker Stack和可对接网络,希望阅读本篇文章以后大家有所收获,帮助大家对网络运维的理解更加深入。在本文中我们会探究创建可对接网络的各种方式,以及一些潜在的应用案例,并且向大家演示如何使用新的docker stack命令。

创建一个可对接网络

Docker网络可以通过Docker CLI、API或者在Docker Compose文件里定义的方式创建。

Docker CLI

Docker CLI有几个管理网络的命令例如create, ls, rm 和 inspect。可对接网络是swarm overlay网络的类型:

$ docker network create --driver=overlay --attachable core-infra

zhxv6ymxhf2u0983x132hvzxf  

$ docker network ls

NETWORK ID          NAME                DRIVER              SCOPE  

d1b84196c831        bridge              bridge              local  

zhxv6ymxhf2u        core-infra          overlay             swarm  

Scope列表明可对接网络只对在swarm的Docker主机可用。它可以是一个单节点swarm或者大规模swarm集群,因为attackable是overlay网络的一个类型。

现在可以创建一个Swarm服务并指定网络:

$ docker service create --publish 80:80 --network=core-infra --name nginx nginx ufs0fhipmxgh4w8wdf04sbkz3  

这和通常情况下在默认ingress网络创建服务一样。可对接选项很有用因为它意味着可以在这个新网络范围内使用docker run来创建容器。

所以让我们使用docker run来创建一个Alpine Linux容器,安装curl来检测nginx实例:

docker run --network=core-infra -ti alpine:latest sh  

/ # apk add --update curl

fetch //dl-cdn.alpinelinux.org/alpine/v3.3/main/x86_64/APKINDEX.tar.gz  

fetch //dl-    cdn.alpinelinux.org/alpine/v3.3/community/x86_64/APKINDEX.tar.gz  

(1/4) Installing openssl (1.0.2k-r0)

(2/4) Installing ca-certificates (20161130-r0)

(3/4) Installing libssh2 (1.6.0-r1)

(4/4) Installing curl (7.52.1-r0)

Executing busybox-1.24.1-r7.trigger  

Executing ca-certificates-20161130-r0.trigger  OK: 7 MiB in 15 packages

/ # curl -v nginx

* Rebuilt URL to: nginx/

*   Trying 10.0.1.2...

* TCP_NODELAY set

* Connected to nginx (10.0.1.2) port 80 (#0)

> GET / HTTP/1.1

> Host: nginx

> User-Agent: curl/7.52.1

> Accept: */*

>

< HTTP/1.1 200 OK  

< Server: nginx/1.11.10  

< Date: Thu, 16 Feb 2017 08:37:40 GMT  

我们可以通过名称访问nginx服务,这在主机是无法完成的;还可以访问swarm上没有published的部分,非常方便进行调试。

一旦创建了容器,docker network inspect core-infra会展示网络的Subnet和其他特征信息。

Compose / (docker stack)

在swarm模式下如果运行docker-compose up,Docker Compose会报错,但是在1.13Docker核心项目加入了一个名叫stack的新功能。stack使用已经实践测试过的Docker Compose格式在swarm上部署服务。

docker stack deploy命令相当于Docker Compose(一个Python应用)用Golang重写。

这是一个部署compose文件作为stack的例子:

$ docker stack deploy webtier --compose-file=./docker-compose.yml

第一个声明的是stack的名称,即webtier

stack文件通过--compose-file来指定

v3 compose格式引入了新的选项

stack命令不能创建新的可对接网络。为了能够让可对接网络使用stack,必须通过docker network create提早定义它,然后把网络指定为external:

version: "3"  services:   nginx:   image: nginx   networks:   - core-infra

networks:   core-infra:   external: true

$ docker stack deploy webtier --compose-file=./docker-compose.yml

Creating service webtier_nginx

$ docker stack ls

NAME  SERVICES  

webtier   1

$ docker stack ps ex1

ID            NAME         IMAGE         NODE  DESIRED STATE  

sxj04xh2z29j  webtier_nginx.1  nginx:latest  moby  Running  

stack的小技巧

stack包括一系列被标签分组到一起的Swarm服务,可以通过stack文件创建的服务上运行docker inspect命令看到:

$ docker inspect webtier_nginx --format="{{.Spec.Labels}}"

map[com.docker.stack.namespace:webtier]  

要更新一个已经使用的stack,只需要再次输入docker stack deploy。

使用案例

现在来看几个如何使用可对接网络的例子。

Privileged容器/设备的创建

总有各种理由让人们想要创建一个Privileged容器。

用Raspberry Pi / IoT管理硬件

创建VPN

为Docker主机设置管理策略

管理硬件的例子——目前来说我还没有想到让它对Swarm服务可用的方法。

可对接网络提供了从swarm服务中分离并调度Privileged容器的能力,并且可以让它们保持通信。

与已有的解决方案共存

可对接网络帮助Docker Swarm服务与以前称为Swarm的编排版本进行交互操作。这一点对用户来说很重要,因为他们已经用Docker数据中心更早期的版本建立了一套解决方案。

老的Swarm和Swarm服务的关键不同在于前者允许容器以一种苛刻的规则方式被调度。声明式swarm服务允许定义一个我们想要实现的最终状态,之后swarm会进行应用并维持这个状态。

这意味着团队可以开始接受并向Swarm服务转移,享受声明式服务在完全ad-hoc容器上的各种好处。

无服务/Ad-hoc任务/调试

无服务framework

无服务和基于功能的framework可以利用一系列声明式服务,同时调度ad-hoc容器按需执行无服务的功能。

Ad-hoc任务/调试

如果不直接使用Docker API,Ad-hoc任务很难通过Swarm服务来调度。这种交互操作允许我们进行维护和诊断的工作。


本文由职坐标整理发布,学习更多的网络运维相关知识,请关注职坐标系统运维网络管理频道!

本文由 @关关 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程