Docker Swarm 学习笔记(九): 使用 Docker Stack 部署 Docker Swarm 服务(以单机版 MySQL 5.7 为例)
                            huty
                            2023年05月25日  ·  阅读 3,546
                        
                    1、 新增 Docker Swarm 节点的元数据
在所有需要部署 MySQL 服务的节点中添加元数据(此处仅部署一个 MySQL 服务,因此只需要向集群中的一个节点添加元数据即可)
docker node update --label-add app=db 节点ID
2、 创建覆盖类型的 Docker Network(可选)
docker network create -d overlay --opt encrypted --subnet 网段 网络名称
示例:
 docker network create -d overlay --opt encrypted --subnet 172.21.0.1/24 db_network
3、 编辑 Docker Stack 的 Yaml 文件
注意:
- docker stack 部署服务时使用的 yaml 文件和 docekr compose 部署服务使用的 yaml 文件格式相同,但版本号必须为 3.0 或以上
 - docker compose 官方文档: https://docs.docker.com/compose/compose-file/
 - docker compose deploy 官方文档: https://docs.docker.com/compose/compose-file/deploy/
 
vim 5-compose.yaml
使用 compose 内部定义的 network 时:
version: "3.9"
services:
  mysql_5:
    image: mysql:5.7.42
    container_name: mysql_5
    hostname: mysql_5
    restart: always
    networks:
      - db_network
    ports:
      - "3306:3306"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - mysql_5_db:/var/lib/mysql
    configs:
      - source: mysql_5_conf
        target: /etc/mysql/conf.d/my.cnf
        mode: 0444
    secrets:
      - mysql_5_root_key
    environment:
      - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql_5_root_key
    deploy:
      mode: replicated
      replicas: 1
      restart_policy: 
        condition: on-failure
        delay: 10s
        max_attempts: 3
        window: 30s
      update_config:
        parallelism: 1
        delay: 10s
        failure_action: rollback
        monitor: 30s
      rollback_config:
        parallelism: 1
        delay: 10s
      placement:
        constraints:
          - node.labels.app==db
volumes:
  mysql_5_db:
configs:
  mysql_5_conf:
    file: mysql_5_my.cnf
secrets:
  mysql_5_root_key:
    file: mysql_5_root.key
networks:
  db_network:
    name: db_network
    driver: overlay
    driver_opts:
      encrypted: 'true'
    ipam:
      driver: default
      config:
        - subnet: 172.21.0.1/24
使用已存在的 network 时:
......(同上)
networks:
  db_network:
    external: true
    name: db_network
4、 编辑 MySQL 配置文件
vim mysql_5_my.cnf
[mysqld]
max_connections = 1000
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
5、 编辑 MySQL root 用户密码文件
vim mysql_5_root.key
123456
6、 使用 docker stack 部署服务
docker stack deploy -c yaml文件 stack名称
示例:
docker stack deploy -c 5-compose.yaml mysql_5
7、 查看使用 docker stack 部署的服务
- 查看 stack 列表
 
docker stack ls
- 查看 stack 包含的服务
 
docker stack services stack名称
示例:
docker stack services mysql_5
- 查看 stack 包含的任务
 
docker stack ps stack名称
示例:
docker stack ps mysql_5
7、 删除使用 docker stack 部署的服务
docker stack rm stack名称
示例:
docker stack rm mysql_5
                
评论已关闭