docker pull mysql:8.0.35
拉取成功后就可以看到镜像了:
这里我们选择MySQL 8.0.35
版本,因为在8.0.33
及其之前的版本被扫出多个漏洞,所以决定使用比较新版本的8.0.35
。
docker volume create mysql_data8_35
最好在启动时自己准备好配置文件
3.1 启动脚本
docker run -d -e MYSQL_ROOT_PASSWORD=密码 --name mysql8 -d -p 13307:3306 -v mysql_data8_35:/var/lib/mysql -v /日志目录/log:/var/log/ -v /配置文件目录/my.cnf:/etc/mysql/my.cnf mysql:8.0.35
注意:上述启动命令需要修改
密码
、日志目录
、配置文件目录
等内容后才能执行
常见的mysql8配置文件 my.cnf
:
[mysqld]
datadir = /var/lib/mysql
secure-file-priv= NULL
sql-mode = “ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION”
!includedir /etc/mysql/conf.d/
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect=‘SET NAMES utf8mb4’
lower_case_table_names = 1
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
3.2 查看是否启动成功
4.1 查看镜像id
docker ps
4.2 往镜像中放入脚本
docker cp init.sql 84dc03543c0f:/root/init.sql
4.3 进入镜像
docker exec -it mysql8 bash
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
mysql -uroot -p 数据库名 < /root/init.sql
set global general_log=0;
将MySQL镜像打成压缩包,后续就能直接把压缩包
复制到别的服务器
,实现镜像迁移
。
6.1 查看数据卷所在位置
docker volume inspect mysql_data8_35
6.2 数据压缩
6.3 镜像压缩
docker save -o mysql8-35.tar mysql:8.0.35
6.4 最终结果
1. 加载镜像
docker load -i mysql8-35.tar
加载后即可看到镜像
2. 解压数据卷文件
tar -zxvf mysql8-35.tar.gz
3. 启动镜像
启动指令:
docker run -d -e MYSQL_ROOT_PASSWORD=密码 --name mysql8 -d -p 13307:3306 -v 数据卷解压目录/_data:/var/lib/mysql -v 日志目录/logs:/var/log/mysql8 -v 配置文件目录/my.cnf:/etc/mysql/my.cnf mysql:8.0.35
上述指令的
配置文件目录
、日志目录
都是非必须的,如果不需要将对应 -v指令去掉即可