Docker部署MySQL完整指南:从入门到实践 - 指南
在开始之前,确保系统已安装Docker,系统资源至少2GB内存、5GB可用磁盘空间。
基础部署
1.拉取MySQL镜像
从官方拉取MySQL镜像
docker pull mysql:8.02 运行MySQL容器
使用以下命令启动MySQL容器:
docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=yourpassword -d -p 3306:3306 mysql:8.0参数说明:
- --name mysql-server:指定容器名称
- -e MYSQL_ROOT_PASSWORD=yourpassword:设置root用户密码
- -d:后台运行容器
- -p 3306:3306:将容器的3306端口映射到主机的3306端口
3 验证部署
# 检查容器状态
docker ps
# 连接MySQL
docker exec -it mysql-server mysql -uroot -p输入之前设置的密码,如果能够成功登录,说明MySQL运行正常。
若有报错:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
可能是容器未运行,或者是运行了但还在初始化没有完全启动。
或者按以下步骤连接mysql:
docker exec -it  /bin/bash
mysql -uroot -p完整示例
# 1. 查看当前镜像
docker images | grep mysql
# 2. 拉取MySQL 8.0
docker pull mysql:8.0
# 3. 验证拉取结果
docker images mysql
# 4. 启动测试容器
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=root123 -d mysql:8.0
# 5. 查看容器状态
docker ps | grep mysql细节难点
1.数据持久化
默认情况下,容器内的数据在容器删除后会丢失,对于实际项目这会有严重的影响。为了持久化MySQL数据,我们需要使用Docker卷。
(1) 创建数据卷
docker volume create mysql-data(2)使用数据卷启动容器
docker run --name mysql-server \
-e MYSQL_ROOT_PASSWORD=yourpassword \
-v mysql-data:/var/lib/mysql \
-d -p 3306:3306 mysql:8.0细节说明:
1)使用 docker run 命令中直接使用 -v mysql-data:/var/lib/mysql,而mysql-data这个命名卷不存在时,Docker会自动创建这个命名卷。也就是说起始创建数据卷这一步可以省略。
2)docker volume create mysql-data或者直接用docker run -v生成的mysql-data,创建了一个名为 mysql-data 的命名卷,与linux中的目录类似但又有区别,Docker命名卷不是一个普通的目录,而是一个由Docker管理的特殊存储区域。

2.备份与恢复
(1)备份数据库
docker exec mysql-server sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > backup.sql(2)恢复数据库
docker exec -i mysql-server sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < backup.sql(3)备份单个数据
# 备份
docker exec mysql-server mysqldump -uroot -p database_name > backup.sql
# 恢复
docker exec -i mysql-server mysql -uroot -p database_name < backup.sql3.mysql版本选择
常用的MySQL版本
- mysql:latest- 最新稳定版
- mysql:8.0- MySQL 8.0最新
- mysql:5.7- MySQL 5.7最新
- mysql:8.0.35- 指定小版本
- mysql:5.7.44- 指定小版本
# 拉取MySQL最新版本
docker pull mysql
# 拉取MySQL 8.0
docker pull mysql:8.0
# 拉取MySQL 5.7
docker pull mysql:5.7
# 拉取MySQL 8.0.35
docker pull mysql:8.0.35版本选择建议
- 新项目:使用 mysql:8.0或具体版本如mysql:8.0.35
- 兼容性要求:使用 mysql:5.7
- 生产环境:建议使用具体的小版本号,避免自动更新,如拉取MySQL 8.0.35
4.Docker 镜像工具安装
Docker 镜像设计的最佳实践 - 保持镜像最小化,只包含运行服务所必需的组件。官方 MySQL 镜像缺少一些常用的工具,比如不会自带 vi/vim 编辑器。
可以进入容器中安装、docker run启动时安装,也可以用自定义镜像。
用Dockerfile创建自定义MySQL 镜像:
FROM mysql:8.0.35
# 如果是 Alpine Linux
RUN apk update && apk add --no-cache \
vim \
curl \
wget \
bash
# 如果是基于 rpm 的系统但缺少 yum
# RUN microdnf install vim curl wget 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号