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等众多容器集群系统,我们该如何选择呢?它 ...
随机推荐
- PDM->OOM->C#实体类生成时,对Blob类型字段的处理
pdm中的Blob字段生成OOM时,自动变成了string类型,再生成实体类时也是string 如何将oom中对应的blob字段设置为Byte[]类型,目前没找到方法, 只能通过脚本,将生成后的OOM ...
- HDU-6290_奢侈的旅行(Dijstra+堆优化)
奢侈的旅行 Time Limit: 14000/7000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Problem De ...
- Scrapy五大核心组件简介
五大核心组件 scrapy框架主要由五大组件组成,他们分别是调度器(Scheduler),下载器(Downloader),爬虫(Spider),和实体管道(Item Pipeline),Scrapy引 ...
- oracle comment on的用法
转:http://www.2cto.com/database/201109/106249.html oracle中用comment on命令给表或字段加以说明,语法如下:COMMENT ON { ...
- SQL 循环语句
一.if语句 二.while语句 练习: 三.case when 四.练习 1. 2. 3. 4.
- pytorch nn.LSTM()参数详解
输入数据格式:input(seq_len, batch, input_size)h0(num_layers * num_directions, batch, hidden_size)c0(num_la ...
- js(三) ajax异步局部刷新技术底层代码实现
ajax 异步 javaScript and xml 开发五步骤: 1. 创建对象 XMLHttpRequest(chrome,firefox) ie... jquery 2. 找到连接, http的 ...
- vue创建脚手架 cil
1.检查环境是否安装好了!node -vnpm -vnpm install cnpm -g --registry=https://registry.npm.taobao.orgcpm -v (版本与n ...
- js基础-原型
1.定义:我们创建的函数都有一个prototype(原型)属性,该属性是一个对象, 原型模式声明中多了两个属性(自动生成). 构造函数: function Box(nam ...
- P1081 弹珠游戏
题目出处 灵灵和他的小伙伴聪聪发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只能攻击你所在的行.列里的所有敌人,然后你就可以获得 ...