基本是照着这个做的:https://www.cnblogs.com/straycats/p/9251571.html
默认登录进来在/root目录,直接新建的目录 /root/mysql,感觉有点不合理,暂时没改
1、初始化docker swarm
docker swarm init
2、在刚刚建立的目录下新建一个data目录,以及一个文件:mysql.yml
version: '3.6' services: mysql: image: mysql:5.6.40 environment: - TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=123456 volumes: - /root/mysql/data:/var/lib/mysql deploy: replicas: 1 restart_policy: condition: any resources: limits: cpus: "0.2" memory: 512M update_config: parallelism: 1 # 每次更新1个副本 delay: 5s # 每次更新间隔 monitor: 10s # 单次更新多长时间后没有结束则判定更新失败 max_failure_ratio: 0.1 # 更新时能容忍的最大失败率 order: start-first # 更新顺序为新任务启动优先 ports: - 3306:3306 networks: - myswarm-net networks: myswarm-net:
3、运行
docker stack deploy -c mysql.yml mysqlstack
印象中 docker stack 工具是和docker一起安装到系统的
4、还需要配置mysql允许远程访问(完全copy过来的,仅以备忘):
docker ps
docker exec -it 0d66abc8ce32 /bin/bash
mysql -uroot -p
mysql> use mysql;
mysql> grant all privileges on *.* to root@'%' identified by "123456";
mysql> flush privileges;
mysql> exit
exit
然后在别的机器就可以用mysql管理工具连过来了
5、这里是使用的一个docker stack运行的mysql,可以用以下命令查看所有的docker stack:
docker stack ls
当然,这个stack里,目前只配置了运行一个mysql容器,可以 docker ps 查看所有运行的容器:
可以看到运行中的容器,在没有指定name的情况下,生成的name是以运行docker stack时指定的stack的name开头的。
6、这种情况下,虽然也可以使用docker stop来停止这个mysql容器,不过,停止了之后,马上就又有一个容器起来了,应该是docker stack自动起的:
这种情况下,如果再手动把刚刚关掉的容器启动,操作系统会卡一会,我猜是因为同时有两个容器,挂载的数据卷是同一个目录所以有冲突,不过docker stack会马上自动关掉一个,我尝试时是刚刚启动的这个被docker stack被关掉了,不过容器还在。
实际上是不应该这样操作的。
应该使用如下命令来关闭 mysql 服务:
docker stack rm mysqlstack
这样的话,刚刚看到的两个mysql 容器都被删除了。
顺便说一下,要在此基础上安装wordpress的话,当然,这是本地的一个虚拟机:
docker run --name some-wordpress -e WORDPRESS_DB_HOST=192.168.1.8:3306 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123456 -d -p 8090:80 wordpress