menu 学习笔记
search self_improvement
目录

Docker Swarm 学习笔记(九): 使用 Docker Stack 部署 Docker Swarm 服务(以单机版 MySQL 5.7 为例)

huty
huty 2023年05月25日  ·  阅读 1,013

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 文件

注意:

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

评论已关闭