Docker-swarm集群之compose启动多服务
本篇文章是在搭建过Swarm集群基础上进行的,如未搭建过请移步 :
Docker swarm 集群搭建 - Wanwan’s Blog (wanwancloud.cn)
环境信息
主机名 |
IP |
主机配置 |
master |
10.10.10.3 |
2c2g |
node01 |
10.10.10.4 |
2c2g |
node02 |
10.10.10.5 |
2c2g |
docker swarm集群环境准备完毕,导入docker-compose命令
docker swarm集群中的机器都要安装该命令
1、yum方式
1
| [root@master ~]# yum -y install docker-compose
|
2、二进制方式
1 2 3 4 5
| [root@master ~]# wget https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 mv docker-compose-linux-x86_64 /usr/bin/docker-compose
[root@master ~]# chmod +x /usr/bin/docker-compose
|
命令解析
1 2 3 4 5 6 7 8 9 10 11 12 13
| docker stack deploy: 用于部署新的堆栈或更新现有堆栈。 例:docker stack deploy -c docker-compose.yml wordpress #部署,更新名为wordpress的堆栈
docker stack ls : 列出在Swarm中运行的所有堆栈
docker stack services: 列出堆栈中的服务,显示诸如副本数、期望副本数和可用副本数等信息 例: docker stack services wordpress # 列出名为wordpress堆栈中的服务,容器名,状态,副本数,所用镜像,端口等详细信息
docker stack ps :列出堆栈中的任务(容器) 例:docker stack ps wordpress #查看到堆栈中容器状态,Id,镜像,运行所在主机等信息
docker stack rm: 会移除一个堆栈以及其所有服务 例:docker stack rm wordpress #删除wordpress堆栈及堆栈所创建的容器(用启动堆栈yml文件创建挂载的卷也会被删除,手动创建的卷不会被删除)
|
wordpress服务部署
准备启动文件
编写docker-compose.yml
文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| [root@master ~]# cat > docker-compose.yml << EOF version: "3" services: wordpress: image: wordpress ports: - 80:80 networks: - overlay environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress deploy: mode: replicated replicas: 3 db: image: mysql networks: - overlay volumes: - db-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress deploy: placement: constraints: [node.role == manager] visualizer: image: dockersamples/visualizer:stable ports: - "8080:8080" stop_grace_period: 1m30s volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager] volumes: db-data: networks: overlay: EOF
|
**其中的 **visualizer
服务提供一个可视化页面,可以从浏览器中很直观的查看集群中各个服务的运行节点。(加不加都行)
启动服务
查看服务启动状态
1
| [root@master ~]# docker stack ps wordpress
|
1
| [root@master ~]# docker service ls
|
可以看到已经全部启动完毕,访问节点中的任意ip:80
即wordpress博客页面 访问节点中的任意ip:8080
即可视化页面可以看到集群状态
删除服务
1
| [root@master ~]# docker stack rm wordpress
|
music部署
由于代码有些问题所以web端部署单副本,api部署3副本
下载源码包
1 2
| 链接:https://pan.baidu.com/s/1A685EDbAJgHGc44lY-1z4g?pwd=yyds 提取码:yyds
|
上传到服务器
1 2 3 4
| # 所有节点导入api镜像 [root@master ~]# docker load < api.tar # 解压html包 (这里没有指定web部署节点,所以所有节点都需要解压这个文件,否则nginx会启动失败) [root@master ~]# tar xf html.tar
|
启动服务
1 2 3 4
| [root@master ~]# docker stack deploy -c docker-compose.yml music
[root@master ~]# docker stack ps music
|
访问 任意节点ip:80
:web端 ip:3000
:api接口
删除服务
1
| [root@master ~]# docker stack rm music
|