Loading... ## 使用 Docker 部署运行 MySQL 5.7 指南 Docker 提供了一种便捷、高效的方式来快速部署应用,包括数据库服务。通过 Docker 部署 MySQL 5.7,不仅能简化环境配置,还能确保环境一致性,方便开发和生产的快速切换。 本文将详细介绍如何通过 Docker 拉取并运行 MySQL 5.7 容器,涵盖镜像获取、数据持久化、网络配置等步骤。 ### 一、环境准备 在开始之前,请确保系统已安装 Docker,并处于运行状态。可以通过以下命令检查 Docker 是否已安装并正常工作: ```bash docker --version ``` 如果未安装 Docker,请根据官方文档进行安装,并确保服务启动。 ### 二、拉取 MySQL 5.7 镜像 首先,拉取 MySQL 5.7 的官方 Docker 镜像。MySQL 提供了多种版本的官方镜像,确保选择了正确的版本。 执行以下命令来拉取 MySQL 5.7 镜像: ```bash docker pull mysql:5.7 ``` 解释: - `docker pull`:用于从 Docker Hub 上拉取指定的镜像。 - `mysql:5.7`:指定拉取 MySQL 5.7 版本的官方镜像。 镜像拉取完成后,可以使用 `docker images` 命令查看本地镜像列表,确保 MySQL 5.7 镜像已经成功下载。 ### 三、创建并运行 MySQL 容器 拉取镜像后,接下来需要创建并运行 MySQL 容器。以下是运行 MySQL 5.7 容器的基本命令: ```bash docker run --name mysql57-container -e MYSQL_ROOT_PASSWORD=root_password -p 3306:3306 -d mysql:5.7 ``` 解释: - `docker run`:创建并启动一个新的容器。 - `--name mysql57-container`:为容器指定一个名称,这里命名为 `mysql57-container`,可以根据需要自定义。 - `-e MYSQL_ROOT_PASSWORD=root_password`:通过环境变量设置 MySQL 的 root 用户密码,将 `root_password` 替换为你实际想设置的密码。 - `-p 3306:3306`:将容器内部的 MySQL 端口 3306 映射到宿主机的 3306 端口,确保可以通过宿主机访问 MySQL。 - `-d`:后台运行容器。 - `mysql:5.7`:指定运行的 MySQL 镜像版本。 #### 1. 数据持久化 容器中的数据是临时的,一旦容器被删除或重新启动,数据将丢失。为了解决这一问题,使用 Docker 卷(Volumes)将 MySQL 的数据目录映射到宿主机,实现数据持久化。 以下是包含数据持久化配置的命令: ```bash docker run --name mysql57-container -v /my/local/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root_password -p 3306:3306 -d mysql:5.7 ``` 解释: - `-v /my/local/data:/var/lib/mysql`:将宿主机的 `/my/local/data` 目录映射到容器中的 `/var/lib/mysql` 目录。MySQL 的数据文件默认存储在 `/var/lib/mysql` 中,这样可以确保 MySQL 数据在容器重启或删除后仍然保留。 #### 2. 自定义配置 有时,默认的 MySQL 配置可能无法满足生产需求,可以通过挂载自定义配置文件来覆盖默认设置。以下命令演示了如何挂载自定义的 `my.cnf` 配置文件: ```bash docker run --name mysql57-container -v /my/local/data:/var/lib/mysql -v /my/custom/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root_password -p 3306:3306 -d mysql:5.7 ``` 解释: - `-v /my/custom/my.cnf:/etc/mysql/my.cnf`:将宿主机的自定义 MySQL 配置文件挂载到容器的 `/etc/mysql/my.cnf`,以覆盖容器内部的默认配置。 ### 四、验证 MySQL 容器的运行状态 启动容器后,可以通过以下命令检查容器的运行状态: ```bash docker ps -a ``` 此命令会列出所有容器,包括正在运行的和已经停止的容器。确保 MySQL 容器处于 `Up` 状态。如果容器没有成功启动,可以通过 `docker logs mysql57-container` 查看详细日志信息,排查错误原因。 ### 五、连接 MySQL 容器 容器启动后,可以使用以下两种方式连接到 MySQL 数据库: #### 1. 通过宿主机 MySQL 客户端连接 确保 MySQL 客户端已经安装在宿主机上,然后执行以下命令: ```bash mysql -h 127.0.0.1 -P 3306 -u root -p ``` 解释: - `-h 127.0.0.1`:指定连接的主机地址为本地。 - `-P 3306`:指定端口为 3306。 - `-u root`:使用 root 用户登录。 - `-p`:提示输入密码。 输入在容器启动时设置的 root 密码,即可连接到 MySQL 数据库。 #### 2. 通过 Docker 容器内部连接 也可以直接进入 MySQL 容器内部进行操作,执行以下命令进入容器: ```bash docker exec -it mysql57-container bash ``` 进入容器后,使用 MySQL 客户端连接数据库: ```bash mysql -u root -p ``` 同样输入密码后即可登录到 MySQL。 ### 六、容器管理操作 在使用 Docker 运行 MySQL 容器过程中,可能需要进行一些基本的管理操作: #### 1. 停止容器 ```bash docker stop mysql57-container ``` 解释:`docker stop` 命令用于停止运行中的容器。 #### 2. 启动容器 ```bash docker start mysql57-container ``` 解释:`docker start` 命令用于启动已经创建但处于停止状态的容器。 #### 3. 删除容器 ```bash docker rm mysql57-container ``` 解释:`docker rm` 命令用于删除指定的容器。需要注意的是,删除容器时数据会被清除,因此建议使用数据持久化方案。 #### 4. 删除镜像 如果不再需要某个镜像,可以通过以下命令删除: ```bash docker rmi mysql:5.7 ``` 解释:`docker rmi` 命令用于删除指定的镜像。 ### 七、总结 通过 Docker 部署 MySQL 5.7 可以大幅简化数据库的安装和配置过程。Docker 提供的容器化环境不仅保证了应用的隔离性,还让数据库的部署和迁移变得更加灵活。通过合理配置数据持久化和自定义配置文件,开发者可以轻松将 Docker 容器中的 MySQL 集成到生产环境中。 | **步骤** | **命令示例** | | -------------------- | -------------------------------------------------------------------------------------------------------------- | | 拉取 MySQL 镜像 | `docker pull mysql:5.7` | | 运行 MySQL 容器 | `docker run --name mysql57-container -e MYSQL_ROOT_PASSWORD=root_password -p 3306:3306 -d mysql:5.7` | | 数据持久化配置 | `docker run -v /my/local/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root_password -p 3306:3306 -d mysql:5.7` | | 验证容器运行状态 | `docker ps -a` | | 连接 MySQL 容器 | `mysql -h 127.0.0.1 -P 3306 -u root -p` 或 `docker exec -it mysql57-container bash` | | 停止、启动、删除容器 | `docker stop mysql57-container`、`docker start mysql57-container`、`docker rm mysql57-container` | | 删除镜像 | `docker rmi mysql:5.7` | 最后修改:2024 年 09 月 01 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏