部署服务
新建服务 在 manager 节点运行 docker service create
来创建服务 用法类似 docker run
--replicas 3 表示 运行的容器数量 这里是 3
docker service create --replicas 3 -p 80:80 --name nginx nginx:alpine
ujzjguqnf94jhvacfpmnk2osk
overall progress: 3 out of 3 tasks
1/3: running [==================================================>]
2/3: running [==================================================>]
3/3: running [==================================================>]
verify: Service converged
现在我们使用浏览器,输入任意节点 IP ,即可看到 nginx 默认页面。
提示: swarm 模式的服务 可访问节点IP 数量与容器数量无关
就算只创建一个容器数量的 nginx
仍然可以通过所有集群节点访问
因为 swarm 有内建网络互联 会自动路由请求到目标节点容器端口
查看服务 在 manager 节点运行 docker service ls
来查看当前 Swarm
集群运行的服务。
docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
fysd8lyrxdxr nginx replicated 3/3 nginx:alpine *:80->80/tcp
在 manager 节点运行 docker service ps $SERVICE_NAME
来查看当前 Swarm
集群运行的服务运行详情
docker service ps nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
99qwsh8xpuu9 nginx.1 nginx:alpine node13 Running Running about a minute ago
lu7yaeuptsuk nginx.2 nginx:alpine node12 Running Running about a minute ago
qkqbs2ig266u nginx.3 nginx:alpine node11 Running Running about a minute ago
服务伸缩
我们可以使用 docker service scale
对一个服务运行的容器数量进行伸缩。
当业务处于高峰期时,我们需要扩展服务运行的容器数量。
docker service scale nginx=5
当业务平稳时,我们可以减少服务运行的容器数量。
docker service scale nginx=2
删除服务
使用 docker service rm
来从 Swarm
集群移除某个服务。
docker service rm nginx