MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)

张开发
2026/4/14 19:46:33 15 分钟阅读

分享文章

MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
网盘分享 MySQL-8.0.32 版本 Docker 镜像文件链接: https://pan.baidu.com/s/1cubH9dYhtslD7nqZxlYfSA?pwdr96p 提取码: r96pDocker部署 MySQL8.0.32 版本1.部署流程1.1 导入镜像文件1.2 创建挂载目录1.3 添加配置文件1.4 启动命令1.4.1 核心配置参数环境变量1.4.2 存储与数据持久化卷挂载1.4.3 网络与端口1.4.4 容器运行策略1.4.5 MySQL 服务端参数直接追加2.总结1.部署流程1.1 导入镜像文件# 上传镜像文件并导入镜像dockerload-imysql8.0.32.tar# 输出日志caefa4e45110: Loading layer[]112.4MB/112.4MB 5ed69eb31cd7: Loading layer[]11.26kB/11.26kB a9805d41c46a: Loading layer[]2.359MB/2.359MB 3f772020efc1: Loading layer[]13.93MB/13.93MB 08745f0c18ca: Loading layer[]7.168kB/7.168kB 0b298ddae18b: Loading layer[]3.072kB/3.072kB dffcd75d4203: Loading layer[]178.9MB/178.9MB 27fefd67a649: Loading layer[]3.072kB/3.072kB 500cc6781b7e: Loading layer[]237.2MB/237.2MB a5b118f152bf: Loading layer[]17.41kB/17.41kB edddc37f3f38: Loading layer[]1.536kB/1.536kB Loaded image: mysql:8.0.32导入后可以使用命令查看镜像信息dockerimages# 镜像信息REPOSITORY TAG IMAGE ID CREATED SIZE mysql8.0.32 412b8cc72e4a2years ago 531MB1.2 创建挂载目录为的是便于编辑配置文件和查看日志信息如果数据库的数据量比较大也可将数据文件放在容器外启动容器的时候挂载 data 和 log 目录即可# 创建挂载目录mkdir-p/home/mysql/{conf,data,log}1.3 添加配置文件懂的都懂当然也可以不添加配置文件使用默认的# 添加配置文件vim/home/jsgx/mysql/conf/my.cnf# 配置文件内容[mysqld]# 默认配置log_binmysql-binlogmax_connections2000join_buffer_size8Mread_buffer_size8Mread_rnd_buffer_size8Minnodb_log_buffer_size128Minnodb_read_io_threads8innodb_write_io_threads8innodb_buffer_pool_size64Gtable_open_cache4000secure_file_privinnodb_log_file_size1024Minnodb_log_files_in_group4innodb_flush_log_at_trx_commit0sync_binlog2000sql_modeNO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONlower_case_table_names1[client]port3306[mysqldump]quickmax_allowed_packet1024Mnet_buffer_length64M1.4 启动命令在使用 Docker 启动 MySQL 容器时可通过docker run命令传递多种参数来配置容器的运行环境、网络、存储以及 MySQL 本身的属性。而这些参数可以大致分为Docker 运行参数控制容器行为和MySQL 镜像特定参数控制数据库行为。以下是常用的参数详解1.4.1 核心配置参数环境变量这些参数通常以-e开头用于设置 MySQL 的初始配置和用户权限。参数含义示例-e MYSQL_ROOT_PASSWORDyourpassword必填。设置 MySQL 的root用户密码。-e MYSQL_ROOT_PASSWORD123456-e MYSQL_ROOT_HOST%设置允许 root 用户从哪些主机连接。%代表任意主机即允许远程连接默认是localhost。-e MYSQL_ROOT_HOST%-e MYSQL_DATABASEmydb容器启动时自动创建一个指定名称的数据库。-e MYSQL_DATABASEtest_db-e MYSQL_USERmyuser创建一个新用户并赋予对MYSQL_DATABASE指定数据库的操作权限。-e MYSQL_USERjohn-e MYSQL_PASSWORDmypass配合MYSQL_USER使用设置新用户的密码。-e MYSQL_PASSWORDsecret-e TZAsia/Shanghai设置容器时区防止日志或时间字段出现时差问题。-e TZAsia/Shanghai1.4.2 存储与数据持久化卷挂载使用-v参数将宿主机的目录挂载到容器内防止容器删除后数据丢失。数据目录-v /宿主机路径/data:/var/lib/mysql将 MySQL 的数据文件存储在宿主机确保数据持久化。配置文件-v /宿主机路径/conf:/etc/mysql/conf.d将自定义的.cnf配置文件挂载到容器内覆盖默认配置如字符集、连接数。日志目录-v /宿主机路径/logs:/var/log/mysql将日志文件输出到宿主机便于排查问题。初始化脚本-v /宿主机路径/init:/docker-entrypoint-initdb.d将.sql或.sh脚本挂载到此目录容器首次启动时会自动执行这些脚本用于初始化表结构或数据。1.4.3 网络与端口端口映射 (-p)语法-p 宿主机端口:容器端口示例-p 3306:3306将宿主机的 3306 端口映射到容器的 3306 端口。如果宿主机 3306 已被占用可以映射为其他端口如-p 3307:3306。容器名称 (--name)为容器指定一个易记的名称方便后续管理如docker stop mysql-container。1.4.4 容器运行策略参数含义-d后台运行容器detached mode。--restartalways设置容器随 Docker 服务开机自启或在崩溃后自动重启。--privilegedtrue赋予容器高权限通常在 SELinux 或权限受限的系统中需要。--nethost使用宿主机网络模式不推荐常规使用会失去网络隔离。1.4.5 MySQL 服务端参数直接追加在镜像名称后面直接追加 MySQL 的启动参数用于覆盖默认配置。字符集设置--character-set-serverutf8mb4--collation-serverutf8mb4_unicode_ci大小写不敏感仅限初始化--lower_case_table_names1SQL 模式--sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES这是一个结合了上述大部分最佳实践的启动命令dockerrun-d\--namemysql-prod\-p3306:3306\-eMYSQL_ROOT_PASSWORDStrongPassword123\-eMYSQL_ROOT_HOST%\-eTZAsia/Shanghai\-v/data/mysql/conf:/etc/mysql/conf.d\-v/data/mysql/data:/var/lib/mysql\-v/data/mysql/logs:/var/log/mysql\-v/data/mysql/init:/docker-entrypoint-initdb.d\--restartalways\mysql:8.0\--character-set-serverutf8mb4\--collation-serverutf8mb4_unicode_ci\--lower_case_table_names1数据库的版本不同挂载目录会存在差异本次测试使用的命令dockerrun-d\--namemysql8.0.32\-p3309:3306\-eMYSQL_ROOT_PASSWORD1234567890\-v/home/mysql/conf/my.cnf:/etc/mysql/my.cnf\-v/home/mysql/data:/var/lib/mysql\-v/home/mysql/log:/logs\--privilegedtrue\mysql:8.0.32\--lower_case_table_names12.总结Docker 部署的优点不少我最看中的是它只需要一行命令即可启动一个 MySQL 实例。不需要手动配置软件源、处理依赖关系且可以离线部署。而同时切换 MySQL 版本变得异常简单只需更换镜像标签如mysql:5.7切换到mysql:8.0无需重新安装或担心依赖冲突极大地提升了部署效率。

更多文章