亲宝软件园·资讯

展开

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

加载全部内容

相关教程
猜你喜欢
用户评论