用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
数据库
›
分布式数据库
›
Docker 搭建 MySQL 数据库
Docker 搭建 MySQL 数据库
民工心事
论坛元老
|
2025-4-19 04:59:01
|
显示全部楼层
|
阅读模式
楼主
主题
1700
|
帖子
1700
|
积分
5100
前言
在本篇文章中,我们将详细介绍怎样通过 Docker 快速搭建一个 MySQL 数据库环境,并通过一些简单的设置来实现数据持久化、日志管理和定制化的设置文件。
一、预备工作
首先,确保你的系统上已经安装了 Docker。
Linux上举行Docker安装有两种方式:
Docker自动化安装
Docker手动安装
可以根据该文章的步骤举行安装:https://blog.csdn.net/weixin_44876263/article/details/136714078?spm=1001.2014.3001.5502
二、设置 MySQL 容器的目次结构
为了确保容器中的 MySQL 数据持久化并且可以或许方便地访问,我们需要在宿主机上创建一些当地目次来挂载到 Docker 容器中。这里我们在 /opt/docker/demo 路径下创建 MySQL 相关的目次,包罗日志、数据和设置文件目次。
# 安装路径
DIR="/opt/docker/demo"
DOCKER_NAME="docker-mysql"
# 创建目录结构
mkdir -p "$DIR/mysql/log"
mkdir -p "$DIR/mysql/data"
mkdir -p "$DIR/mysql/conf"
复制代码
这里我们创建了以下几个目次:
log:存放 MySQL 容器的日志文件。
data:存放 MySQL 容器的数据文件。
conf:存放 MySQL 设置文件。
三、设置 MySQL 容器
接下来,我们将使用 Docker 运行一个 MySQL 容器。Docker 提供了一个官方的 mysql:8.0 镜像,我们将基于该镜像来创建容器。
以下是启动 MySQL 容器的下令:
docker run -d \
--restart=always \
--name "$DOCKER_NAME" \
--network host \
-v "$DIR/mysql/log:/var/log/mysql" \
-v "$DIR/mysql/data:/var/lib/mysql" \
-v "$DIR/mysql/conf:/etc/mysql/conf.d" \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0
复制代码
解释各个参数:
-d:背景运行容器。
--restart=always:容器在瓦解或机器重启后会自动重启。
--name "$DOCKER_NAME":指定容器名称为 docker-mysql。
--network host:将容器毗连到宿主机的网络,以便外部可以访问 MySQL 服务。
-v "$DIR/mysql/log:/var/log/mysql":将宿主机的日志目次挂载到容器内的日志目次。
-v "$DIR/mysql/data:/var/lib/mysql":将宿主机的数据目次挂载到容器的数据目次,确保数据持久化。
-v "$DIR/mysql/conf:/etc/mysql/conf.d":将宿主机的设置文件目次挂载到容器内的设置目次。
-e MYSQL_ROOT_PASSWORD=root:设置 MySQL 根用户的密码为 root。
mysql:8.0:使用官方的 MySQL 8.0 镜像
四、自定义 MySQL 设置
MySQL 的设置文件可以通过挂载宿主机的设置目次到容器内举行自定义。你可以在 conf 目次下创建一个 custom.cnf 文件,设置 MySQL 的监听端口等参数。
例如,我们可以设置 MySQL 监听的端口为 3307,而不是默认的 3306,或设置时区 +08:00。只需要在 custom.cnf 中添加如下设置:
[mysqld]
port = 3307
default-time-zone = '+08:00'
复制代码
然后,确保该文件挂载到容器内的正确位置(/etc/mysql/conf.d/)。
五、端口设置:Host 网络模式 vs Port 映射模式
在 Docker 中,容器的网络设置和端口管理黑白常重要的。对于 MySQL 容器,有两种常见的端口设置方式:
Host 网络模式
在 Docker 中使用 --network host 选项时,容器会直接使用宿主机的网络栈,这意味着容器将使用宿主机的 IP 地址和端口。
当你使用 Host 网络模式时,容器中的 MySQL 服务将直接袒露在宿主机的默认端口(如 3306)。无需举行端口映射,MySQL 容器将与宿主机共享网络接口。
设置下令:
docker run -d \
--restart=always \
--name "$DOCKER_NAME" \
--network host \
-v "$DIR/mysql/log:/var/log/mysql" \
-v "$DIR/mysql/data:/var/lib/mysql" \
-v "$DIR/mysql/conf:/etc/mysql/conf.d" \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0
复制代码
优点
容器共享宿主机的网络,性能较高。
无需显式端口映射,容器与宿主机共享相同的网络。
缺点
容器与宿主机的网络完全共享,可能会有端口辩论,尤其是多个容器或服务同时运行时。
容器的端口与宿主机端口相同,可能存在安全隐患。
Port 映射模式
假如你希望对容器的端口举行灵活设置,可以使用 -p 参数将容器的端口映射到宿主机的特定端口。通过这种方式,你可以将容器内的 MySQL 端口(默认为 3306)映射到宿主机上的另一个端口。
例如,将容器内的 3306 端口映射到宿主机的 3307 端口:
设置下令:
docker run -d \
--restart=always \
--name "$DOCKER_NAME" \
-p 3307:3306 \
-v "$DIR/mysql/log:/var/log/mysql" \
-v "$DIR/mysql/data:/var/lib/mysql" \
-v "$DIR/mysql/conf:/etc/mysql/conf.d" \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0
复制代码
优点
容器端口与宿主机端口差别,可以避免端口辩论。
容器与宿主机之间有更好的网络隔离性。
支持多个容器映射到宿主机差别的端口,适合多容器环境。
缺点
可能会导致稍微的性能损失,由于需要举行额外的端口映射。
需要手动管理和指定端口映射。
六、检查 MySQL 容器状态
容器启动后,你可以通过以下下令检查容器是否正常运行:
docker ps
复制代码
该下令会列出全部正在运行的容器。假如你的 MySQL 容器没有出现在列表中,可以通过检察容器日志来排盘问题:
docker logs docker-mysql
复制代码
七、毗连到 MySQL 容器
假如你需要毗连到容器内的 MySQL 数据库,可以使用 docker exec 下令进入容器并使用 mysql 客户端举行毗连:
docker exec -it docker-mysql mysql -u root -p
复制代码
输入密码后,你将进入 MySQL 提示符,可以实行 SQL 查询等操纵。
八、备份与恢复
为了确保数据的安全性,你可以定期备份 MySQL 数据。由于数据已经挂载到宿主机目次 $DIR/mysql/data,以是你可以直接备份该目次中的数据文件。
例如,你可以使用 tar 下令将数据目次打包备份:
tar -czvf mysql_backup.tar.gz -C "$DIR/mysql" data
复制代码
恢复时,只需要将备份文件解压到相应的目次即可。
总结
通过 Docker 搭建 MySQL 数据库环境非常简单,并且可以或许通过挂载宿主机目次的方式实现数据持久化和日志管理。通过修改容器内的设置文件,你还可以自定义 MySQL 的参数,例如监听端口等。
Docker 提供了两种常见的端口设置方式:
Host 网络模式
和
Port 映射模式
。选择哪种方式取决于你的需求:
Host 网络模式
:适用于需要高性能、直接使用宿主机网络的场景。
Port 映射模式
:适用于需要灵活设置端口、避免端口辩论或需要更好网络隔离的场景。
无论选择哪种方式,Docker 都可以或许通过简单的设置帮助你快速搭建 MySQL 数据库,并且根据你的需求举行灵活的端口管理。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
民工心事
论坛元老
这个人很懒什么都没写!
楼主热帖
Cilium系列-10-启用 IPv6 BIG TCP和启 ...
【云原生】Spring Cloud是什么?Spring ...
大数据开源项目,一站式全自动化全生命 ...
容器化|自建 MySQL 集群迁移到 Kubern ...
超详细的手把手撸代码---教你你⾃定义 ...
如火如荼的「云原生」,你了解多少? ...
Spark快速上手(4)Spark核心编程-Spark ...
【Java面试】介绍下Spring IoC的工作流 ...
安全应急响应中心SRC
用 Flutter 写一个精美的登录页面(最 ...
标签云
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
网络安全
移动端开发
云原生
快速回复
返回顶部
返回列表