当前位置: 首页 > news >正文

Docker部署MySQL完整指南:从入门到实践

在开始之前,确保系统已安装Docker,系统资源至少2GB内存、5GB可用磁盘空间。

基础部署

1.拉取MySQL镜像

从官方拉取MySQL镜像

docker pull mysql:8.0

2 运行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 <container-id> /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.sql

3.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

http://www.lryc.cn/news/617517.html

相关文章:

  • Oracle主从incarnation不一致问题解决
  • 如何网络“钓鱼”,钓鱼鱼饵生成工具CobaltStrike使用
  • 云原生应用的DevOps2(Jenkins渗透场景)
  • 【从零开始java学习|第一篇】java中的名词概念(JDK、JVM、JRE等等)
  • JVM 运行时全景:从类加载到 GC 的底层原理与调优指南
  • 在Mac 上生成GitLab 的SSH 密钥并将其添加到GitLab
  • Empire--安装、使用
  • 【12-激活函数】
  • 类和对象(中上)
  • 腾讯 iOA 测评 | 横向移动检测、病毒查杀、外设管控、部署性能
  • 运维学习Day21——LAMP/LNMP 最佳实践
  • react+vite-plugin-react-router-generator自动化生成路由
  • 论文阅读 arxiv 2024 MemGPT: Towards LLMs as Operating Systems
  • Linux:进程调度
  • linux下部署 dify,并配置本地ollama大模型
  • 关系型数据库:原理、演进与生态全景——从理论基石到云原生的深度巡礼
  • 论文阅读:Aircraft Trajectory Prediction Model Based on Improved GRU Structure
  • AD8475ARMZ-RL ADI放大器/缓冲器 集成电路IC 半导体芯片
  • AI Coding 概述及学习路线图
  • 【IntelliJ IDEA】修改堆内存
  • window显示驱动开发—多平面覆盖硬件要求
  • A2O MAY确认发行新曲《B.B.B (Bigger Badder Better)》 8月13日强势回归!
  • 【论文阅读】BEVFormer论文解析及Temporal Self-Attention、Spatial Cross-Attention注意力机制详解及代码示例
  • 基于领域事件驱动的微服务架构设计与实践
  • 【10】微网优联——微网优联 嵌入式技术一面,校招,面试问答记录
  • 15. xhr 对象如何发起一个请求
  • SAE J2716多协议网关的硬件架构与实时协议转换机制解析
  • pdf转word教程
  • 轻量级解决方案:如何高效处理Word转PDF?
  • ubuntu20.04交叉编译vlc3.0.21 x64 windows版本