1. 背景与目标
本指南旨在指导用户在 Ubuntu Linux 虚拟机上,通过 Docker 容器化技术快速部署 MySQL 8.0.42 数据库。相比传统安装方式,Docker 部署具有环境隔离、配置简单、易于迁移和清理的优势,能够极大降低环境配置的复杂度。
2. 环境确认
在执行安装前,请确认当前系统为 Ubuntu。
- 判断依据 :终端提示符格式为
username@hostname:~$,且系统使用apt作为包管理器(若使用yum则为 CentOS/RHEL,不适用本指南)。 - 权限要求 :后续命令均需使用
sudo或root权限执行。
3. 安装 Docker 引擎
3.1 安装依赖包
首先安装必要的工具,允许 apt 通过 HTTPS 使用仓库:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
3.2 添加 Docker 软件源
为确保下载速度,建议使用国内阿里云镜像源:
1. 添加 GPG 密钥:
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
2. 添加软件源:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
3.3 安装 Docker
更新索引并安装 Docker 引擎:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
3.4 启动与自启
sudo systemctl start docker
sudo systemctl enable docker
3.5 配置镜像加速器(关键步骤)
国内网络直接访问 Docker Hub 可能会遇到 connection refused 或超时问题,必须配置加速器:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1ms.run"
]
}
EOF
重启 Docker 使配置生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
3.6 验证安装
运行测试容器,若输出 Hello from Docker! 则安装成功:
sudo docker run hello-world
4. 部署 MySQL 8.0.42
4.1 拉取指定版本镜像
sudo docker pull mysql:8.0.42
4.2 启动 MySQL 容器
执行以下命令一键启动数据库服务:
sudo docker run -d \
--name mysql8 \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart=always \
mysql:8.0.42
参数说明:
| 参数 | 说明 |
|---|---|
-d |
后台运行容器 |
--name mysql8 |
指定容器名称为 mysql8 |
-p 3306:3306 |
端口映射:宿主机 3306 -> 容器 3306 |
-e TZ=Asia/Shanghai |
设置容器时区为上海 |
-e MYSQL_ROOT_PASSWORD |
设置 root 用户密码(示例为 123456) |
--restart=always |
虚拟机重启后自动启动容器 |
4.3 验证运行状态
sudo docker ps
确认 mysql8 容器的 STATUS 为 Up,且 PORTS 显示 0.0.0.0:3306->3306/tcp。
5. 客户端连接指南
在 Windows 物理机上使用 Navicat、DBeaver 或 IDEA 等工具连接:
- 主机 (Host) :虚拟机 IP 地址(在虚拟机执行
ip addr查看) - 端口 (Port) :
3306 - 用户名 (User) :
root - 密码 (Password) :
123456(或启动时设置的密码)
6. 常见问题与注意事项
6.1 数据持久化(重要)
默认情况下,容器删除后数据会丢失。生产环境或长期开发建议挂载数据卷:
# 示例:将数据挂载到宿主机 /opt/mysql/data
sudo docker run -d \
--name mysql8 \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /opt/mysql/data:/var/lib/mysql \
--restart=always \
mysql:8.0.42
6.2 网络报错处理
若拉取镜像时出现 dial tcp ... connection refused:
- 检查是否已配置
/etc/docker/daemon.json。 - 执行
sudo systemctl restart docker重启服务。 - 检查虚拟机网络模式是否为 NAT 或桥接,确保能访问外网。
6.3 容器管理常用命令
- 停止容器 :
sudo docker stop mysql8 - 启动容器 :
sudo docker start mysql8 - 查看日志 :
sudo docker logs mysql8 - 删除容器 :
sudo docker rm -f mysql8