Docker 安装 MySQL 安装配置教程
一、Docker 简介
Docker 是一个开源的应用容器引擎,它可以将应用程序及其依赖包打包成容器,实现应用的便捷部署、升级和扩展。容器之间相互隔离,如同虚拟机一样,但又不同于虚拟机,容器拥有更少的资源占用和更快的启动速度。Docker 容器可以在任何支持 Docker 的机器上运行,实现了应用的跨平台一致性。
二、安装 Docker
1. 安装 Docker 引擎
- Ubuntu 系统:
```bash
sudo apt update
sudo apt install docker.io
```
- CentOS 系统:
```bash
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
```
- Mac 系统:
下载 Docker Desktop for Mac 并安装。
- Windows 系统:
下载 Docker Desktop for Windows 并安装。
2. 启动 Docker 服务
```bash
sudo systemctl start docker
sudo systemctl enable docker
```
3. 验证 Docker 安装
```bash
docker --version
docker run hello-world
```
三、拉取 MySQL 镜像
1. 查找 MySQL 镜像
```bash
docker search mysql
```
2. 拉取 MySQL 镜像
```bash
docker pull mysql:latest
```
四、运行 MySQL 容器
1. 简单运行 MySQL 容器
```bash
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
```
2. 映射端口和数据目录
```bash
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -v /mydata/mysql:/var/lib/mysql -d mysql:latest
```
3. 设置环境变量
```bash
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=mydb -e MYSQL_USER=myuser -e MYSQL_PASSWORD=mypw -d mysql:latest
```
五、进入 MySQL 容器
1. 进入容器终端
```bash
docker exec -it my-mysql bash
```
2. 登录 MySQL
```bash
mysql -uroot -p
```
输入之前设置的密码 `my-secret-pw`。
六、配置 MySQL
1. 修改 MySQL 配置文件
- 进入容器
```bash
docker exec -it my-mysql bash
```
- 编辑配置文件
```bash
nano /etc/mysql/my.cnf
```
- 修改配置
```ini
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
```
- 保存并退出,按 `Ctrl+O` 保存,`Ctrl+X` 退出。
2. 重启 MySQL 容器
```bash
docker restart my-mysql
```
七、备份与恢复 MySQL 数据
1. 备份数据
```bash
docker exec -it my-mysql mysqldump -uroot -pmydb > /mydata/mysql_backup.sql
```
2. 恢复数据
```bash
docker exec -it my-mysql mysql -uroot -pmydb </mydata/mysql_backup.sql
```
以上步骤完成了从 Docker 安装到 MySQL 容器的部署,以及 MySQL 配置、数据备份与恢复的全部过程。通过使用 Docker,可以快速搭建并管理 MySQL 环境,适用于开发测试和生产环境的快速部署。