Docker Swarm是Docker的一种集群管理工具,可以把Docker主机池变为单个虚拟Docker主机。Docker Swarm提供了标准的Docker API,任何通Docker守护程序通信的工具都可以使用Swarm轻松的扩展多个主机。Docker Swarm支持的工具含但不局限于Dokku、Docker Compose、Docker Machine、Jenkins。
Docker Swarm集群是由管理节点和工作节点构成,Swarm mananger主要负责的是整个集群的管理工作如集群配置、服务管理和其他与集群有关的工作。work node是available node负责的是运行相应服务来执行任务。
均以 Docker Machine 和 virtualbox 进行介绍Swarm的使用,前提是确保主机已安装 virtualbox。
一开始要创建Swarm集群管理节点。创建 docker 机器:
$ docker-machine create -d virtualbox swarm-manager
初始化集群Swarm集群,进行初始化这台机器,就是集群的管理节点。
$ docker-machine ssh swarm-manager
$ docker swarm init --advertise-addr 192.168.99.107 #这里的 IP 为创建机器时分配的 ip。
可以直接创建好两台机器,swarm-worker1 和 swarm-worker2 。
docker machine ls
分别进入两个机器里,给指定添加至上一步创建的集群中,需要用到上一步复制的内容。
上图中运行命令如下:
docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
进入管理节点,执行:docker info 可以查看当前集群的信息。
$ docker info
通过红圈内容,可以获取到当前正在运行的集群有三个节点,其中有一个是管理节点。
跟集群管理有关的任何操作都是在管理节点上操作的。如在一个工作节点上创建一个称为helloworld的服务,这是随机指派给一个工作节点:
docker@swarm-manager:~$ docker service create --replicas 1 --name helloworld alpine ping docker.com
查看helloworld服务运行在哪个节点上,可以看到目前是在 swarm-worker1 节点:
docker@swarm-manager:~$ docker service ps helloworld
查看helloworld服务的部署具体信息:
docker@swarm-manager:~$ docker service inspect --pretty helloworld
扩展集群服务,可以把上述的helloworld服务扩展到两个节点:
docker@swarm-manager:~$ docker service scale helloworld=2
可以看到已经从一个节点扩展到两个节点
删除服务:
docker@swarm-manager:~$ docker service rm helloworld
更多技术资讯尽在华纳云!