Docker Swarm 学习笔记(九): 使用 Docker Stack 部署 Docker Swarm 服务(以单机版 MySQL 5.7 为例)
huty
2023年05月25日 · 阅读 1,196
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
评论已关闭