如何用Docker部署Mysql
目录
如何用Docker部署Mysql
1. 安装 Docker
确保已安装 Docker,并启动 Docker 服务。
Linux :
bash
复制
sudo apt update sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker
2. 拉取 MySQL 镜像
从 Docker Hub 拉取官方 MySQL 镜像。
bash
复制
docker pull mysql:latest
3. 启动 MySQL 容器
使用
docker run
命令启动 MySQL 容器。
基本命令
bash
复制
docker run -d \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-p 3306:3306 \
mysql:latest
参数说明
参数 | 说明 |
---|---|
-d | 后台运行容器(detached mode)。 |
--name mysql-container | 为容器指定名称(可自定义)。 |
-e MYSQL_ROOT_PASSWORD | 设置 MySQL 的 root 用户密码(必须设置)。 |
-p 3306:3306 | 将容器的 3306 端口映射到主机的 3306 端口(主机端口:容器端口)。 |
mysql:latest | 使用的镜像名称及版本( latest 表示最新版本)。 |
4. 连接到 MySQL
(1) 进入容器内部
bash
复制
docker exec -it mysql-container mysql -u root -p
输入密码(
my-secret-pw
)后即可进入 MySQL 命令行。
(2) 使用外部客户端
通过主机 IP 和端口(
localhost:3306
)连接 MySQL,使用工具如:
MySQL CLI :
bash
复制
mysql -h 127.0.0.1 -P 3306 -u root -p
图形化工具 :如 MySQL Workbench、DBeaver 等。
5. 持久化数据
默认情况下,容器停止后数据会丢失。可以通过挂载卷(Volume)将数据持久化到主机。
挂载数据卷
bash
复制
docker run -d \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-p 3306:3306 \
-v /path/on/host:/var/lib/mysql \
mysql:latest
/path/on/host
:主机上的目录路径(需提前创建)。/var/lib/mysql
:容器内 MySQL 数据存储路径。
6. 自定义配置文件
如果需要使用自定义的 MySQL 配置文件(如
my.cnf
),可以挂载配置文件到容器。
挂载配置文件
bash
复制
docker run -d \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-p 3306:3306 \
-v /path/on/host/my.cnf:/etc/mysql/my.cnf \
mysql:latest
7. 环境变量配置
MySQL 镜像支持通过环境变量配置数据库。
环境变量 | 说明 |
---|---|
MYSQL_ROOT_PASSWORD | root 用户密码(必须设置)。 |
MYSQL_DATABASE | 创建指定名称的数据库。 |
MYSQL_USER | 创建新用户。 |
MYSQL_PASSWORD | 为新用户设置密码。 |
示例
bash
复制
docker run -d \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_DATABASE=mydb \
-e MYSQL_USER=myuser \
-e MYSQL_PASSWORD=mypassword \
-p 3306:3306 \
mysql:latest
8. 常用管理命令
命令 | 说明 |
---|---|
docker ps | 查看运行中的容器。 |
docker stop mysql-container | 停止容器。 |
docker start mysql-container | 启动已停止的容器。 |
docker restart mysql-container | 重启容器。 |
docker logs mysql-container | 查看容器日志。 |
docker rm mysql-container | 删除容器(需先停止)。 |
docker rmi mysql:latest | 删除镜像。 |
9. 使用 Docker Compose 部署
对于复杂场景(如多容器应用),推荐使用 Docker Compose。
docker-compose.yml
示例
yaml
复制
version: '3.8'
services:
mysql:
image: mysql:latest
container_name: mysql-container
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
ports:
- "3306:3306"
volumes:
- /path/on/host:/var/lib/mysql
启动服务
bash
复制
docker-compose up -d
10. 总结
- 使用 Docker 部署 MySQL 简单高效,适合开发、测试和生产环境。
- 通过挂载卷和配置文件,可实现数据持久化和自定义配置。
- 对于复杂场景,推荐使用 Docker Compose 管理多容器应用。