前言

经过之前一段时间学习与思考,我们已经大概明确了一些感念: Docker image/container,  service and node

简单来说,swarm允许我们以节点(node)的方式组织集群(cluster);每个节点上面可以部署一个或者多个服务(service);每个服务又可以包括一个或者多个(container)

在此,我放上Docker官方网站的结构图,方便理解。

创建网络

在部署服务之前,我们首先需要创建网络。Docker 提供了不同的方式供我们创建不同形式的网络。在这里,我们创建 overlay 模式的网络

$ docker network create --driver overlay \

  --subnet 10.0.0.1/24 \

  --opt encrypted \

  mynetwork

-- driver 指定网络方式

-- subset 指定用于网络的子网, 如果不指定,swarm会自动选择一个子网,但是根据官网的描述这个自动指定的子网这个可能会引起container通信的问题。(before kelner 3.10)

-- opt 指定网络安全模式

创建网络完成后,我们可以查看到我们的网络

$ docker network ls

PS : 在这里贴一下官网对于network的描述,有兴趣的童鞋可以看一下

Docker Engine swarm mode natively supports overlay networks, so you can enable container-to-container networks. When you use swarm mode, you don’t need an external key-value store. Features of swarm mode overlay networks include the following:

  • You can attach multiple services to the same network.
  • By default, service discovery assigns a virtual IP address (VIP) and DNS entry to each service in the swarm, making it available by its service name to containers on the same network.
  • You can configure the service to use DNS round-robin instead of a VIP.

In order to use overlay networks in the swarm, you need to have the following ports open between the swarm nodes before you enable swarm mode:

  • Port 7946 TCP/UDP for container network discovery.
  • Port 4789 UDP for the container overlay network.

在指定网络上添加服务

$ docker service create \

  --name mybusybox \

  --network mynetwork \

  busybox \

  sleep 3000

添加一个名称为mybusybox的service,这个 service 将启动找到对应的 image (如果没有会自动下载) 并且启动 container. 完成后我们可以看到 service 的信息

$ docker service ps mybusybox

再添加一个同类型的 service, 命名为tuobusybox, 在这里添加两个service是为了演示之后的夸 container 相互访问,实际情况下,应根据我们的业务需求添加 service

现在我们再查看network 信息

$docker network inspect mynetwork

这里可以看到,我们的网络“mynetwork” 下面运行着两个service

容器间通信

到这里为止,我们的 service 以及 container 已经已经创建完成。现在我们来测试下container之间的通信。

启动一个service 并且进入容器, 我这里是 mybusybox

$ docker exec -it mybusybox.1.cj3y6wgt6rry6pxei9utjufpo /bin/sh

在容器内查看另一个容器, tuobusybox

可以看到,能够使用DNS查询到 tuobusybox 服务 (service)

在mybusybox container 里面,使用 tasks.SERVICE-NAME 来查看指点 service 中所有 container 的 IP

$ nslookup tasks.tuobusybox

由于我们只启动了一个container, 所以只返回了一个IP。

OK,我们已经完成了在自己的网络下运行多个服务(容器),并且验证了容器之间的网络链接 :)

Docker - 使用 swarm 部署 services的更多相关文章

  1. docker kubernetes Swarm容器编排k8s CICD部署

    1docker版本 docker 17.09 https://docs.docker.com/ appledeAir:~ apple$ docker version Client: Docker En ...

  2. docker stack /swarm 替代 docker-compose 进行部署

    之前一直用docker-compose开发了几个单例的service, 今天开始压力测试, 结果发现postgres的CPU负载很重, 就想设置cpus 结果发现docker-compose V3之后 ...

  3. Docker管理工具 - Swarm部署记录

    之前介绍了Docker集群管理工具-Kubernetes部署记录,下面介绍另一个管理工具Swarm的用法,Swarm是Docker原生的集群管理软件,与Kubernetes比起来比较简单. Swarm ...

  4. Docker Swarm部署集群

    一.Swarm简介 Swarm是Docker的一个编排工具,参考官网:https://docs.docker.com/engine/swarm/ Swarm 模式简介 要在Swarm模式下运行dock ...

  5. 小白学Docker之Swarm

    承接上篇文章:小白学Docker之Compose,自学网站来源于https://docs.docker.com/get-started 系列文章: 小白学Docker之基础篇 小白学Docker之Co ...

  6. Docker And Swarm Mode(一)

    (一)节点的创建和配置 前言  虽然工作中一直在用Docker和Docker Swarm,但是总感觉有点陌生,总想自己亲手来写写和配置Docker 容器相关的事情,这篇文章主要是参考了Los Tech ...

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

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

  8. Docker Compose 一键部署LNMP

    Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...

  9. Docker Compose 一键部署Nginx代理Tomcat集群

    Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...

随机推荐

  1. 【转】Java设计模式-单例模式详解

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6510196.html 所谓单例,指的就是单实例,有且仅有一个类实例,这个单例不应该由人来控 ...

  2. python中配置文件的使用

    一. 什么是配置文件?为什么要做配置文件? 将所有的代码和配置都变成模块化可配置化,这样就提高了代码的重用性,不再每次都去修改代码内部,这个就是我们逐步要做的事情,可配置化 二. python中的Co ...

  3. 解决Oracle数据库IP地址改变创建数据库的问题

    方案一 查了相关的资料后才知道,只要修改安装Oracle的目录下面的listener.ora和tnsnames.ora里面的内容即可.看图看图  修改什么内容呢?看图看图. 就是HOST地址改一下就可 ...

  4. 51nod 1326 奇妙的spfa+dp

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1326 1326 遥远的旅途 题目来源: TopCoder 基准时间限制: ...

  5. Struts01---入门小案例

    创建web项目    实现的效果! 用户点击页面不同的链接,后台调用不同的代码! 创建两个类实现共同的接口! public interface Action { String execute(); } ...

  6. Failed to export application

    打包Android项目,遇到Failed to export application的错误提示.如何处理呢 我当时是 在替换图标时   没有完全替换 只替换了 四张drawable_h图片,没有替换上 ...

  7. 作为一名Java开发工程师需要掌握的专业技能

    在学习Java编程完之后,学员们面临的就是就业问题.作为一名Java开发工程师,企业在招聘的时候,也是有一定的标准的. 为了帮助大家更好的找到适合自己的工作,在这里分享了作为一名Java开发工程师需要 ...

  8. LEX下出毛病的问题

    毛病! 1.今日写词法分析,回想起第一次写时候的蓝色警告:不要随便管理员.so,便Win+R,"cmd",回车. 2.在用lex写的时候,注意注释是 /*注释放于此处*/ 而非一般 ...

  9. linux(redhat) mysql 的安装

    教程链接 注意 1.检查版本32/64位的时候 输入 name -a 输出为 Linux localhost.localdomain 2.6.18-53.el5 #1 SMP Wed Oct 10 1 ...

  10. POJ 2954 Triangle (pick 定理)

    题目大意:给出三个点的坐标,问在这三个点坐标里面的整数坐标点有多少个(不包含边上的) 匹克定理:I = (A-E) / 2 + 1; A: 表示多边形面积 I : 表示多边形内部的点的个数 E: 表示 ...