Docker Swarm Mode 入门实践
本文来源
翻译并总结官方文档,添加自定义示例,参考自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 入门实践的更多相关文章
- Docker Swarm 从入门到放弃
准备工作 我本机是macOS,所以我直接安装了docker desktop,其中包含了docker-machine,不用单独安装. 安装docker主机驱动 我在网上很多人提到了使用virtualbo ...
- 【docker 一】入门实践、环境部署、基本操作指令、镜像库、数据卷
简述 `docker是如火如荼的容器技术,今后会陆续上传关于微服务技术的学习笔记,希望能和大家一起学习一起分享!` docker环境搭建 1.获取最新版的Docker安装包 $ wget -qO- h ...
- Docker 入门实践
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...
- 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...
- 微服务 + Docker + Kubernetes 入门实践 目录
微服务 + Docker + Kubernetes 入门实践: 微服务概念 微服务的一些基本概念 环境准备 Ubuntu & Docker 本文主要讲解在 Ubuntu 上安装和配置 Dock ...
- 这是一次 docker 入门实践
前言 其实接触 docker 也有一段时间了,但是一直没有做下总结,现在网上关于 docker 的介绍也有很多了,本着好记性不如烂笔头的原则,还是自己再记录一波吧. 实现目标 安装 docker ce ...
- 项目中docker swarm实践
docker swarm 集群服务通信 前置要求 服务需要在同一个docker swarm集群中 服务需要处于同一个overlay网络上 服务需要暴露容器端口 有2个以上服务名不同的服务 服务部署流程 ...
- docker 实践九:docker swarm
介绍了 docker 三剑客中的 docker-machine 和 docker-compose 之后,就剩下一个 docker swarm 了.那本篇的主角就是它了. 注:环境为 CentOS7,d ...
- 生产环境中使用Docker Swarm的一些建议
译者按: 实践中会发现,生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行.然而,面对Kubernetes, Mesos以及Swarm等众多容器集群系统,我们该如何选择呢?它 ...
随机推荐
- BKDRhash
哈希: 字符串(数字同理): 例如有100000个字符串,现在要插入一些字符串,插入前比较是否已经存在避免含有重复数据 用暴力计较的话会比较慢,在某字符串插入时,最好的情况是在第一个位置就遇见该字符 ...
- Part10-字符型设备驱动模型-part10.1-使用字符型设备
‘ ’
- @gym - 101190B@ Binary Code
目录 @description@ @solution@ @accepted code@ @details@ @description@ 我们称一组字符串是 "前缀码",当且仅当不存 ...
- @codeforces - 418D@ Big Problems for Organizers
目录 @description@ @solution@ @accepted code@ @details@ @description@ n 个点连成一棵树,经过每条边需要花费 1 个单位时间. 现给出 ...
- oracle使用表的别名(Alias)
当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误. (Column歧义指的是由于SQL中不同 ...
- 微软产品开发文档:包括.net core .net vs等等
Browse all https://docs.microsoft.com/en-us/learn/browse/?roles=developer&products=xamarin%2Cef- ...
- SuperSocket命令程序集定义
是的,SuperSocket是用反射来查找哪些公开的类实现了基本的命令接口,但是它只在你的AppServer类定义的程序集中查找. 举例来说, 你的 AppServer 定义在程序集 GameServ ...
- React与Vue的相同与不同点
我们知道JavaScript是世界上最流行的语言之一,React和Vue是JS最流行的两个框架.所以要想前端的开发那么必须掌握好这两个框架. 那么这两个框架有什么不同呢? React 和 Vue 相同 ...
- Xshell如何修改字体大小和颜色
https://jingyan.baidu.com/article/db55b609aac41e4ba30a2f86.html 打开Xshell,点击菜单栏的“文件”->“属性”,或者也可以使用 ...
- H3C ACL规则的匹配顺序