docker部署mysql5.6.40

基本是照着这个做的: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

原文地址:https://www.cnblogs.com/lihan829/p/10241302.html