Ubuntu 虚拟机 Docker 与 MySQL 8.0.42 部署指南

1. 背景与目标

本指南旨在指导用户在 Ubuntu Linux 虚拟机上,通过 Docker 容器化技术快速部署 MySQL 8.0.42 数据库。相比传统安装方式,Docker 部署具有环境隔离、配置简单、易于迁移和清理的优势,能够极大降低环境配置的复杂度。

2. 环境确认

在执行安装前,请确认当前系统为 Ubuntu

  • 判断依据 :终端提示符格式为 username@hostname:~$,且系统使用 apt 作为包管理器(若使用 yum 则为 CentOS/RHEL,不适用本指南)。
  • 权限要求 :后续命令均需使用 sudoroot 权限执行。

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 容器的 STATUSUp,且 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

  1. 检查是否已配置 /etc/docker/daemon.json
  2. 执行 sudo systemctl restart docker 重启服务。
  3. 检查虚拟机网络模式是否为 NAT 或桥接,确保能访问外网。

6.3 容器管理常用命令

  • 停止容器sudo docker stop mysql8
  • 启动容器sudo docker start mysql8
  • 查看日志sudo docker logs mysql8
  • 删除容器sudo docker rm -f mysql8
相关推荐
ManageEngine卓豪3 小时前
数据库可观测性:MySQL与Redis监控核心监控指标与全栈运维解决方案
数据库·redis·mysql·数据库性能·数据库监控
上天_去_做颗惺星 EVE_BLUE4 小时前
【新 Linux 服务器上手全攻略】系统巡检、存储规划与开发环境初始化
linux·运维·服务器·ubuntu·macos·centos
霸道流氓气质4 小时前
从MySQL到云原生:全面解析阿里云PolarDB数据库及其与MySQL的核心差异
数据库·mysql·云原生
木雷坞4 小时前
Playwright MCP Docker 部署:mcr 镜像、浏览器工具和权限配置
运维·docker·容器·mcp
das2m4 小时前
WSL2 Ubuntu 配置完美版 docker compose 指南
linux·ubuntu·docker
暮云星影4 小时前
个人总结 docker搭建私人照片云相册Immich
docker·容器·arm
MIXLLRED4 小时前
Ubuntu 22.04 + ROS2 Humble 上部署 ScaRF‑SLAM指南
ubuntu·slam·ros2·离线建图
AI服务老曹4 小时前
破局异构计算与海量协议:基于 Docker 容器化的国标 GB28181/RTSP 边缘计算 AI 视频管理平台架构设计与源码交付实践
人工智能·docker·边缘计算
江湖有缘4 小时前
Docker一键部署open-resume简历生成器
运维·docker·容器