Docker swarm集群之compose启动多服务

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方式

复制代码
[root@master ~]# yum -y install docker-compose

2、二进制方式

复制代码
# 下载文件
[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

命令解析

复制代码
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文件

复制代码
[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 服务提供一个可视化页面,可以从浏览器中很直观的查看集群中各个服务的运行节点。(加不加都行)

启动服务

复制代码
[root@master ~]# docker stack deploy -c docker-compose.yml  wordpress

查看服务启动状态

复制代码
[root@master ~]# docker stack ps  wordpress
复制代码
[root@master ~]# docker service ls 

可以看到已经全部启动完毕,访问节点中的任意ip:80即wordpress博客页面 访问节点中的任意ip:8080即可视化页面可以看到集群状态

删除服务

复制代码
[root@master ~]# docker stack rm wordpress 

music部署

由于代码有些问题所以web端部署单副本,api部署3副本

下载源码包

复制代码
链接:https://pan.baidu.com/s/1A685EDbAJgHGc44lY-1z4g?pwd=yyds 
提取码:yyds

上传到服务器

复制代码
# 所有节点导入api镜像
[root@master ~]# docker load  < api.tar 
# 解压html包 (这里没有指定web部署节点,所以所有节点都需要解压这个文件,否则nginx会启动失败)
[root@master ~]# tar xf html.tar

启动服务

复制代码
# 启动服务
[root@master ~]# docker stack deploy -c docker-compose.yml  music
# 查看服务启动状态
[root@master ~]# docker stack ps music

访问 任意节点ip:80:web端 ip:3000:api接口

删除服务

复制代码
[root@master ~]# docker stack rm music 
相关推荐
roman_日积跬步-终至千里2 小时前
【Docker多节点部署】基于“配置即身份“理念的 Docker 多节点 StarRocks 高可用集群自动化部署方案
java·docker·微服务
piepis2 小时前
Doris Docker 完整部署指南
数据仓库·docker·doris·容器部署
sg_knight6 小时前
Docker 实战:如何限制容器的内存使用大小
java·spring boot·spring·spring cloud·docker·容器·eureka
电棍2336 小时前
在docker a100云服务器运行vulkan->sapien->robotwin的经验(报错segmentation fault)
运维·docker·容器
MichaelCoCoQ10 小时前
Zabbix监控K8S的PV卷
容器·kubernetes·负载均衡·zabbix·运维开发
似水流年 光阴已逝11 小时前
k8s中的StatefulSet 控制器
云原生·容器·kubernetes
chen_note11 小时前
K8s的标签应用和调度
云原生·容器·kubernetes·标签·污点与容忍度
墨倾许11 小时前
《Windows 11 + Docker:极简DVWA靶场搭建全记录》—— 附详细排错指南与最终解决方案
windows·笔记·网络安全·docker·容器·靶场
岚天start11 小时前
解决方案—K8S集群的日志按天并按照命名空间分类定时同步到日志服务器
服务器·docker·kubernetes·shell·日志备份
微学AI12 小时前
内网穿透的应用-摆脱局域网!Stable Diffusion3.5 结合cpolar使用更方便
docker·stable diffusion·内网穿透