Docker Swarm Mode 入门实践
东北小狐狸 人气:1本文来源
翻译并总结官方文档,添加自定义示例,参考自Docker 19.03版本官方文档
未来可能归档为:https:/https://img.qb5200.com/download-x/docs.docker.com/v19.03/
2020.01.03为https:/https://img.qb5200.com/download-x/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
加载全部内容
- 猜你喜欢
- 用户评论