docker stack deploy
命令完成部署和管理bulid
指令,使用的镜像必须是构建好的,而Docker Compose可以使用,相对而言Docker Compose更适合开发使用[root@node1 reg.mydocker.com]# docker stack --help
#格式
Usage: docker stack [OPTIONS] COMMAND
#Docker stack任务管理
Manage Docker stacks
#选项
Options:
--orchestrator string Orchestrator to use (swarm|kubernetes|all)|选择协调器是swarm还是k8s或者2者
#子命令
Commands:
deploy Deploy a new stack or update an existing stack| 加载一个新的stack任务或者更新某一stack任务
ls List stacks|显示所有stack任务的列表
ps List the tasks in the stack|列出某一个stack的详细任务
rm Remove one or more stacks|删除一个或者多个stack任务
services List the services in the stack|列出某一个stack的所有服务
主机 | IP | 作用 |
---|---|---|
node1 | 192.168.27.11 | 安装有Docker(18.09.6)、集群管理节点、可访问私有仓库 |
node2 | 192.168.27.12 | 安装有Docker(18.09.6)、集群工作节点、可访问私有仓库 |
node3 | 192.168.27.13 | 安装有Docker(18.09.6)、集群工作节点、可访问私有仓库 |
repository | 192.168.27.12 | 搭建有harbor私有仓库,作为集群操作中的镜像使用仓库 |
官方compose文件模板:https://docs.docker.com/compose/compose-file/
[root@node1 stack]# vim docker-stack.yml
version: '3'
services:
web:
image: library/nginx
ports:
- "80:80"
volumes:
- web-data:/usr/share/nginx/html
networks:
- vm_net
deploy:
replicas: 3
volumes:
web-data:
networks:
vm_net:
[root@node1 stack]# docker stack deploy -c docker-stack.yml my_cluster
prots Additional property prots is not allowed
[root@node1 stack]# vim docker-stack.yml
[root@node1 stack]# docker stack deploy -c docker-stack.yml my_cluster
Creating network my_cluster_vm_net
Creating service my_cluster_web
[root@node1 stack]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
e0eo4mb2xnxa my_cluster_web replicated 3/3 nginx:latest *:80->80/tcp
[root@node1 stack]# docker service ps my_cluster_web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
uvq3ayobwam1 my_cluster_web.1 nginx:latest node1 Running Running 17 seconds ago
ar53a9v7o94t my_cluster_web.2 nginx:latest node3 Running Running 16 seconds ago
ulji2jzh25qq my_cluster_web.3 nginx:latest node2 Running Running 16 seconds ago
[root@node1 stack]# curl 192.168.27.11
<!DOCTYPE html>
Welcome to nginx!</title>