docker容器部署mysql

1 关于mysqld的说明

  • mysqldmysqld-safe的区别:mysqld_safe会在mysql服务启动后监控它,并在它死机后重启它。mysqld是mysql的核心程序,用于管理mysql数据库文件及用户的请求操作。mysqld_data相当于一个守护进程,mysqld挂了会自动把mysqld进程启动。
  • 参数说明:
    • --basedir=... mysql安装目录的路径
    • --core-file-size=... mysqld能创建的内核文件的大小
    • --defaults-file=... 读取的代替通用选项文件的选项文件名,如果给出必须首选该选项
    • --defaults-extra-file=... 除了通用选项文件外,所读取的选项文件名,如果给出必须首选该选项
    • --datadir=... 数据目录的路径
    • --log-error=... 将错误日志写入指定的文件
    • --pid-file=... 进程id文件的路径
    • --socket=... 本地连接的Unix套接字文件
    • --port=3306 用来侦听TCP/IP连接的端口号
    • --opne-file-limit=... mysqld能够打开的文件数量

2 docker命令启动mysql容器

  • 命令:docker run -p 3306:3306 -d mysql:8.0.19
  • 报错:通过docker logs containerID查看启动日志为You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
  • 因此,启动mysql容器是要指定环境变量的值

2.1 指定root账号的密码

  • 命令:docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mysql\!\@\# -d mysql:8.0.19
  • 参数说明:
    • -p指定端口映射,-d后台运行
    • -e指定环境变量,指定root账号密码为mysql!@#,其中\为转义

2.2 指定root账号为随机密码

  • 命令:docker run -p 3306:3306 -e MYSQL_RANDOM_ROOT_PASSWORD=yes -d mysql:8.0.19
  • 查看密码:docker logs containerID 2>&1|grep PASSWORD
    查看密码

2.3 指定root账号可以为空

  • 命令:docker run -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql:8.0.19

2.4 数据持久化

  • 命令:docker run -p 3306:3306 -v /Users/chenbinhao/mysql_3306/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql123 -d mysql:8.0.19
  • 说明:可以使用-v参数进行映射,mysql容器内部数据存放在/var/lib/mysql路径中,如图为启动成功后本地路径下持久化的文件
    本地文件夹数据持久化

2.5 如何将2.4中启动的容器迁移到另外一个服务器中

  • 将上例/Users/chenbinhao/mysql_3306/data路径中的持久化数据打包,移动到另外一台服务器上,解压缩后,使用2.4中的启动命令重新启动一个容器即可,其中只需将/Users/chenbinhao/mysql_3306/data替换成解压后的路径即可
  • 说明:如果迁移前的数据已设置了root账号密码,则可以不使用-e MYSQL_ROOT_PASSWORD=mysql123参数

2.6 如何指定配置文件

  • 从容器内/etc/mysql/my.cnf文件中可以看出:只需要额外的配置放置到/etc/mysql/conf.d/路径下即可指定配置/etc/mysql/my.cnf
  • 该路径下原本已有两个配置文件docker.cnf mysql.conf
    /etc/mysql/conf.d
  • 准备好自己的配置文件,执行命令:docker run -p 3306:3306 -v /Users/chenbinhao/mysql_3306/extra.cnf:/etc/mysql/conf.d/extra.cnf -e MYSQL_ROOT_PASSWORD=mysql123 -d mysql:8.0.19,即可使用自定义配置文件启动容器
  • 说明:配置文件命名没有特殊要求,最好以.cnf结尾

2.7 如何修改配置文件

  • 进入容器,如2.6中图所示,修改/etc/mysql/conf.d/路径中的配置文件,退出容器,重启docker restart containerID即可。

3 docker-compose启动mysql容器

  • 目录结构
├─docker-compose.yml
└─mysql
│	├─config
│	│  	└─mysqld.cnf
│	└─data
│	│	└─..
  • 编写docker-compose.yml文件,各项参数配置可参照命令行部署
version: '3'
services:
  mysql:
    image: mysql:8.0.19
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - "./mysql/data:/var/lib/mysql"
      - "./mysql/config/mysqld.cnf:/etc/mysql/conf.d/mysqld.cnf"
  • docker-compose.yml目录中执行命令
    • 运行容器:docker-compose up -d
    • 停止容器:docker-compose down
    • 停止不删除容器:docker-compose stop,再次启动使用docker-compose start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值