Docker创建Mysql容器教程

云计算

Docker创建Mysql容器教程

2024-11-24 00:25


在Docker中创建并管理MySQL容器,可以有效地实现数据库的隔离、可移植性和高可用性。以下是详细的步骤指南,帮助您在Docker环境中顺利部署MySQL容器,并确保其稳定运行。?? ? 创建MySQL容器的步骤概述

                                            




Docker中创建并管理MySQL容器,可以有效地实现数据库的隔离、可移植性和高可用性。以下是详细的步骤指南,帮助您在Docker环境中顺利部署MySQL容器,并确保其稳定运行。??


? 创建MySQL容器的步骤概述

  1. 安装Docker
  2. 拉取MySQL镜像
  3. 创建MySQL容器
  4. 配置持久化存储
  5. 进入MySQL容器
  6. 连接和管理MySQL
  7. 最佳实践与优化

1. 安装Docker

在开始之前,确保您的系统已经安装了Docker。如果尚未安装,请根据您的操作系统选择合适的安装方法。

Ubuntu系统安装Docker的步骤:

# 更新包索引
sudo apt update

# 安装必要的依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

# 添加Docker的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加Docker的APT仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 更新包索引
sudo apt update

# 安装Docker
sudo apt install docker-ce -y

# 启动并设置Docker开机自启
sudo systemctl start docker
sudo systemctl enable docker

解释:

  • sudo apt update:更新包索引,确保获取最新的软件包信息。
  • apt-transport-https、ca-certificates、curl、software-properties-common:安装Docker所需的依赖包。
  • 添加GPG密钥和APT仓库:确保从官方渠道获取Docker镜像,提升安全性。
  • 安装Docker CE:安装Docker社区版。
  • 启动并设置Docker开机自启:确保Docker服务在系统启动时自动运行。??

2. 拉取MySQL镜像

Docker Hub上提供了官方的MySQL镜像,您可以使用以下命令将其拉取到本地。

docker pull mysql:latest

解释:

  • docker pull mysql:latest:从Docker Hub拉取最新版本的MySQL镜像。如果需要特定版本,可以将 latest替换为相应的版本号,如 mysql:8.0。??

3. 创建MySQL容器

使用以下命令创建并运行一个MySQL容器:

docker run -d \
  --name mysql-container \
  -e MYSQL_ROOT_PASSWORD=<root_password> \
  -e MYSQL_DATABASE=<database_name> \
  -e MYSQL_USER=<username> \
  -e MYSQL_PASSWORD=<user_password> \
  -p 3306:3306 \
  -v mysql-data:/var/lib/mysql \
  mysql:latest

解释:

  • docker run -d:以分离模式(后台)运行容器。
  • --name mysql-container:为容器命名为 mysql-container,便于管理。
  • -e MYSQL_ROOT_PASSWORD=<root_password>:设置MySQL root用户的密码,确保数据库安全。
  • -e MYSQL_DATABASE=<database_name>:创建一个默认的数据库。
  • -e MYSQL_USER= 和 -e MYSQL_PASSWORD=<user_password>:创建一个具有特定权限的用户,便于应用程序连接数据库。
  • -p 3306:3306:将容器的3306端口映射到主机的3306端口,方便外部访问。
  • -v mysql-data:/var/lib/mysql:挂载一个命名卷 mysql-data,用于持久化存储数据库数据,防止数据丢失。??
  • mysql:latest:指定使用的MySQL镜像版本。?

示例:

docker run -d \
  --name mysql-container \
  -e MYSQL_ROOT_PASSWORD=StrongPass123 \
  -e MYSQL_DATABASE=mydatabase \
  -e MYSQL_USER=myuser \
  -e MYSQL_PASSWORD=userpass123 \
  -p 3306:3306 \
  -v mysql-data:/var/lib/mysql \
  mysql:8.0

4. 配置持久化存储

为了确保数据库数据在容器重启或删除后依然存在,推荐使用Docker卷来持久化存储。

创建命名卷:

docker volume create mysql-data

解释:

  • docker volume create mysql-data:创建一个名为 mysql-data的Docker卷,用于存储MySQL的数据文件。这样,即使容器被删除,数据依然保留在卷中。??

使用卷创建容器: 在创建容器时,通过 -v选项将卷挂载到容器的 /var/lib/mysql目录,确保数据持久化。


5. 进入MySQL容器

如果需要通过命令行访问MySQL容器,可以进入容器内部进行操作。

docker exec -it mysql-container bash

解释:

  • docker exec -it mysql-container bash:以交互模式进入名为 mysql-container的容器,并启动 bash终端。
  • -it:表示交互式终端,允许用户在容器内执行命令。??️

示例:

docker exec -it mysql-container bash

6. 连接和管理MySQL

进入容器后,可以使用MySQL命令行工具管理数据库。

登录MySQL:

mysql -u root -p

解释:

  • mysql -u root -p:使用 root用户登录MySQL,系统会提示输入密码。
  • -u:指定用户名。
  • -p:提示输入密码。??

创建数据库和用户:

CREATE DATABASE example_db;
CREATE USER 'example_user'@'%' IDENTIFIED BY 'example_pass';
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'%';
FLUSH PRIVILEGES;

解释:

  • CREATE DATABASE example_db;:创建名为 example_db的数据库。
  • CREATE USER 'example_user'@'%' IDENTIFIED BY 'example_pass';:创建一个名为 example_user的用户,允许从任何主机连接。
  • *GRANT ALL PRIVILEGES ON example_db. TO 'example_user'@'%';**:赋予 example_user对 example_db数据库的所有权限。
  • FLUSH PRIVILEGES;:刷新权限,确保新用户和权限立即生效。??

7. 最佳实践与优化

在生产环境中,部署MySQL容器时应考虑以下最佳实践,以确保数据库的安全性、性能和可维护性。?

a. 使用环境变量管理敏感信息

避免在命令行中直接输入密码,建议使用环境变量文件(.env)来管理敏感信息。

label :
  • Docker
  • Mysql
© 蓝易云.