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

济南泰安网站建设公司万网域名交易

济南泰安网站建设公司,万网域名交易,做电影下载网站成本,可信网站认证购买Docker 搭建 MySQL 数据库 前言一、准备工作二、设置 MySQL 容器的目录结构三、配置 MySQL 容器四、自定义 MySQL 配置五、端口配置:Host 网络模式 vs Port 映射模式六、检查 MySQL 容器状态七、连接到 MySQL 容器八、备份与恢复总结 前言 在本篇文章中&#xff0c…

Docker 搭建 MySQL 数据库

  • 前言
  • 一、准备工作
  • 二、设置 MySQL 容器的目录结构
  • 三、配置 MySQL 容器
  • 四、自定义 MySQL 配置
  • 五、端口配置:Host 网络模式 vs Port 映射模式
  • 六、检查 MySQL 容器状态
  • 七、连接到 MySQL 容器
  • 八、备份与恢复
  • 总结


前言

在本篇文章中,我们将详细介绍如何通过 Docker 快速搭建一个 MySQL 数据库环境,并通过一些简单的配置来实现数据持久化、日志管理和定制化的配置文件。


一、准备工作

首先,确保你的系统上已经安装了 Docker。

Linux上进行Docker安装有两种方式:

  1. Docker自动化安装
  2. 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 容器,有两种常见的端口配置方式:

  1. 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
    
    • 优点
      • 容器共享宿主机的网络,性能较高。
      • 无需显式端口映射,容器与宿主机共享相同的网络。
    • 缺点
      • 容器与宿主机的网络完全共享,可能会有端口冲突,尤其是多个容器或服务同时运行时。
      • 容器的端口与宿主机端口相同,可能存在安全隐患。
  2. 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 数据库,并且根据你的需求进行灵活的端口管理。

http://www.dtcms.com/wzjs/315723.html

相关文章:

  • vs2105制作个人网站专业seo网络推广
  • 用符号做照片的网站怎么给自己的公司建立网站
  • 怎么做淘宝 天猫京东网店的网站网络营销平台的主要功能
  • 网站开发作品网络安全培训机构排名
  • 网站购物车设计全网营销平台
  • 自己做的网站用国外的空间怎么样如何做到精准客户推广
  • 网站建设要钱么培训学校招生方案范文
  • 怎样建立网站网站seo诊断报告
  • 福州做网站的公司有哪些今天刚刚发生的新闻
  • 有哪些做推送的网站seo新人怎么发外链
  • 建设网站的企业排行站长工具关键词查询
  • 织梦cms怎么做双语网站北京seo顾问推推蛙
  • 网站做淘宝客还行吗怎么把产品推广到各大平台
  • 电商网站费用网络推广包括哪些
  • 怎样看网站有没有做301app下载注册推广平台
  • 网站建设公司一月赚多少注册安全工程师
  • 电子科技网站建设百度地图人工客服电话
  • wordpress怎么修改css样式长春seo按天计费
  • 做付费视频网站好做app推广去哪找商家
  • php+mysql网站开发全程实例 下载郑州网站seo外包
  • 爱做片视频网站百度问答怎么赚钱
  • 提供企业网站建设价格推广找客户平台
  • 哪个网站可以做公务员题淘宝流量平台
  • 建h5网站费用seo流量的提升的软件
  • 蚂蚁币是什么网站建设深圳网站优化公司哪家好
  • 论坛模板网站建设在线一键生成网页
  • 机械行业做网站网络公司名字
  • wordpress手机底部联系插件百度seo价格
  • 上海 房地产网站建设外链下载
  • 如何网站做淘客如何营销推广自己的产品