本文来源

翻译并总结官方文档,添加自定义示例,参考自Docker 19.03版本官方文档

未来可能归档为:https://docs.docker.com/v19.03/

2020.01.03为https://docs.docker.com/engine/swarm/

本文目标

本文主要演示创建一个小规模的Swarm集群,包含一个管理节点与两个工作节点,概念可以参考https://www.cnblogs.com/hellxz/p/12134386.html

  • 创建Docker Swarm集群
  • 添加节点
  • 部署应用服务
  • 管理Swarm集群

环境说明

  • 三台安装Docker的Linux虚拟机:本文用Docker Machine创建虚拟机
  • Docker版本:18.09.7,理论上1.12版本以后均可
  • 三台虚拟机网络互通

Docker Machine安装参考我的上一篇文章,安装Docker Machine

虚拟机准备

实体机安装Linux或Mac,跳过此节

本文通过一台Linux虚拟机中创建三个虚拟机节点来操作的,虚拟机内存可以开大些,另外需要配置开启Intel VT-x/EPT或AMD-RVI(V)

另外,由于我们要做的实验是在虚拟机下的再创建虚拟机,外部虚拟机与虚拟机内构成内网,在没有设置代理的情况下,我们无法直接通过浏览器直接访问

创建 Swarm 集群(Create a swarm)

创建一个管理节点的虚拟机

$ docker-machine create -d virtualbox manager

连接创建的管理节点虚拟机

$ docker-machine ssh manager1

出现上图已经进入虚拟机了

初始化Swarm集群

$ docker swarm init --advertise-addr 192.168.99.100

初始化完成,在多网卡的情况下,必须使用--advertise-addr指定IP,其它主机必须可以访问此ip,输出中包含新节点加入此节点的命令,我们只需要复制此命令到其它节点上执行

执行docker swarm init的节点自动成为管理节点,节点的ip是ssh到节点后ifconfig查到的

添加节点命令要先复制出来,一会添加节点会用,如果没复制也不要紧

在manager节点输入docker swarm join-token 角色 就能提示token了,上边复制的默认是worker角色的命令

输入docker info查看当前节点的Docker Swarm Mode已经处于激活状态了

执行docker node ls查看当前Swarm集群中节点的情况

*指示当前登录的节点

输出exit退出当前登录的主机

向Swarm添加节点(Add nodes to the swarm)

创建第一个工作节点并ssh连接到这个节点上

$ docker-machine create -d virtualbox worker1
$ docker-machine ssh worker1

执行刚才复制的docker swarm join-token命令,忘了就先去manager节点下执行docker swarm join-token worker来查看命令

$ docker swarm join --token SWMTKN-1-0kr7tkx9ku4rcrl1lny1o8chg9xl24h4nexmz1ctfwz43425uq-egecegeyfaet0volcvo15zia8 192.168.99.100:2377

This node joined a swarm as a worker.

接着创建个worker2,操作不再复述了

查看集群节点情况

连接manager节点,执行命令查看集群状态

$ docker node ls

docker node ls命令仅可以在管理节点使用

部署服务到Swarm集群(Deployed a service)

部署服务只需要使用docker service create加正常的docker命令,还可以指定创建几个备份实例,这里部署2个Nginx

$ docker service create --replicas 2 --name nginx -p 80:80 nginx:mainline-alpine

docker service create命令主要参数:

  • --name - 用来指定服务名,部署服务的容器名使用这个名称作为前缀
  • --replicas - 设置负载实例数

其余参数请自行参考 docker service create --help文档

此命名仅能在manager节点执行

Docker Swarm Mode简介与核心概念 一文中,我们有谈过:服务可以运行在Manager节点上,也可以运行在Worker节点上

部署服务的输出并没有提示具体将服务部署到哪个节点上,接下来我们看看节点情况

查看服务

使用docker service ls查看服务列表,查看具体服务部署在哪个节点使用docker service ps 服务名

如图,我们的服务一个部署到了manger节点上,一个部署在worker1节点上

检查部署在Swarm集群中的服务(Inspect the service)

通过docker service inspect命令检查服务的详细信息,使用--pretty使输出更易读

$ docker service inspect --pretty nginx

除了这种简单的方法外就是普通的办法——去部署的节点上docker ps

Docker Swarm Mode 入门实践的更多相关文章

  1. Docker Swarm 从入门到放弃

    准备工作 我本机是macOS,所以我直接安装了docker desktop,其中包含了docker-machine,不用单独安装. 安装docker主机驱动 我在网上很多人提到了使用virtualbo ...

  2. 【docker 一】入门实践、环境部署、基本操作指令、镜像库、数据卷

    简述 `docker是如火如荼的容器技术,今后会陆续上传关于微服务技术的学习笔记,希望能和大家一起学习一起分享!` docker环境搭建 1.获取最新版的Docker安装包 $ wget -qO- h ...

  3. Docker 入门实践

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...

  4. 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World

    操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...

  5. 微服务 + Docker + Kubernetes 入门实践 目录

    微服务 + Docker + Kubernetes 入门实践: 微服务概念 微服务的一些基本概念 环境准备 Ubuntu & Docker 本文主要讲解在 Ubuntu 上安装和配置 Dock ...

  6. 这是一次 docker 入门实践

    前言 其实接触 docker 也有一段时间了,但是一直没有做下总结,现在网上关于 docker 的介绍也有很多了,本着好记性不如烂笔头的原则,还是自己再记录一波吧. 实现目标 安装 docker ce ...

  7. 项目中docker swarm实践

    docker swarm 集群服务通信 前置要求 服务需要在同一个docker swarm集群中 服务需要处于同一个overlay网络上 服务需要暴露容器端口 有2个以上服务名不同的服务 服务部署流程 ...

  8. docker 实践九:docker swarm

    介绍了 docker 三剑客中的 docker-machine 和 docker-compose 之后,就剩下一个 docker swarm 了.那本篇的主角就是它了. 注:环境为 CentOS7,d ...

  9. 生产环境中使用Docker Swarm的一些建议

    译者按: 实践中会发现,生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行.然而,面对Kubernetes, Mesos以及Swarm等众多容器集群系统,我们该如何选择呢?它 ...

随机推荐

  1. PDM->OOM->C#实体类生成时,对Blob类型字段的处理

    pdm中的Blob字段生成OOM时,自动变成了string类型,再生成实体类时也是string 如何将oom中对应的blob字段设置为Byte[]类型,目前没找到方法, 只能通过脚本,将生成后的OOM ...

  2. HDU-6290_奢侈的旅行(Dijstra+堆优化)

    奢侈的旅行 Time Limit: 14000/7000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Problem De ...

  3. Scrapy五大核心组件简介

    五大核心组件 scrapy框架主要由五大组件组成,他们分别是调度器(Scheduler),下载器(Downloader),爬虫(Spider),和实体管道(Item Pipeline),Scrapy引 ...

  4. oracle comment on的用法

    转:http://www.2cto.com/database/201109/106249.html   oracle中用comment on命令给表或字段加以说明,语法如下:COMMENT ON  { ...

  5. SQL 循环语句

    一.if语句 二.while语句 练习: 三.case when 四.练习 1. 2. 3. 4.

  6. pytorch nn.LSTM()参数详解

    输入数据格式:input(seq_len, batch, input_size)h0(num_layers * num_directions, batch, hidden_size)c0(num_la ...

  7. js(三) ajax异步局部刷新技术底层代码实现

    ajax 异步 javaScript and xml 开发五步骤: 1. 创建对象 XMLHttpRequest(chrome,firefox) ie... jquery 2. 找到连接, http的 ...

  8. vue创建脚手架 cil

    1.检查环境是否安装好了!node -vnpm -vnpm install cnpm -g --registry=https://registry.npm.taobao.orgcpm -v (版本与n ...

  9. js基础-原型

    1.定义:我们创建的函数都有一个prototype(原型)属性,该属性是一个对象,          原型模式声明中多了两个属性(自动生成). 构造函数:       function Box(nam ...

  10. P1081 弹珠游戏

    题目出处 灵灵和他的小伙伴聪聪发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只能攻击你所在的行.列里的所有敌人,然后你就可以获得 ...