在阿里云 ECS 上安装 Docker 并运行 MySQL 镜像,可以分为以下几个步骤。整个过程包括:准备环境(安装 Docker)→ 拉取 MySQL 镜像 → 启动容器 → 验证连接。
✅ 前提条件
- 你已拥有阿里云 ECS 实例,并已登录(推荐 CentOS 7/8、Ubuntu 20.04+ 或 Debian)。
- 确保 ECS 安全组开放了 3306 端口(MySQL 默认端口),以便外部访问(如从本地 Navicat 连接)。
- 登录阿里云控制台 → ECS → 实例 → 安全组 → 添加入方向规则:
- 协议:TCP
- 端口范围:3306/3306
- 授权对象:0.0.0.0/0(或指定 IP)
- 登录阿里云控制台 → ECS → 实例 → 安全组 → 添加入方向规则:
⚠️ 生产环境建议限制授权 IP,避免暴露给全网。
📦 第一步:安装 Docker
Ubuntu/Debian 系统
# 更新包索引
sudo apt-get update
# 安装依赖
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加 Docker GPG 密钥和仓库
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动 Docker 服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 将当前用户加入 docker 组(可选,避免每次用 sudo)
sudo usermod -aG docker $USER
newgrp docker
CentOS/RHEL 系统
# 安装 yum-utils
sudo yum install -y yum-utils
# 添加 Docker 官方源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动并启用 Docker
sudo systemctl start docker
sudo systemctl enable docker
# 可选:允许非 root 用户使用 docker
sudo usermod -aG docker $USER
newgrp docker
🐳 第二步:拉取 MySQL 镜像
推荐使用最新稳定版(如 mysql:8.0):
docker pull mysql:8.0
如需指定版本,例如
mysql:5.7,可替换为docker pull mysql:5.7
🚀 第三步:启动 MySQL 容器
基本命令(不推荐用于生产)
docker run --name mysql-container
-e MYSQL_ROOT_PASSWORD=my-secret-pw
-p 3306:3306
-d mysql:8.0
✅ 推荐方式:使用数据卷持久化 + 自定义配置
创建目录结构:
mkdir -p ~/mysql/data ~/mysql/conf ~/mysql/logs
创建配置文件 ~/mysql/conf/my.cnf(可选,用于自定义参数):
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=1000
default-time-zone='+08:00'
启动容器:
docker run --name mysql-container
-v ~/mysql/data:/var/lib/mysql
-v ~/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
-v ~/mysql/logs:/var/log/mysql
-e MYSQL_ROOT_PASSWORD=my-secret-pw
-e TZ=Asia/Shanghai
-p 3306:3306
-d mysql:8.0
🔒 请修改
my-secret-pw为强密码!
✅ 第四步:验证 MySQL 是否正常运行
1. 查看容器状态
docker ps
应看到 mysql-container 处于 Up 状态。
2. 进入容器内部测试
docker exec -it mysql-container mysql -u root -p
输入密码后,执行:
SHOW DATABASES;
EXIT;
3. 从本地连接测试
使用数据库客户端(如 DBeaver、Navicat、MySQL Workbench)连接:
- Host:
<你的ECS公网IP> - Port:
3306 - User:
root - Password:
my-secret-pw
💡 如果无法连接,请检查:
- 安全组是否开放 3306
- 防火墙是否放行(
sudo ufw allow 3306或sudo firewall-cmd --add-port=3306/tcp --permanent && sudo firewall-cmd --reload)- MySQL 是否监听所有地址(Docker 默认是
0.0.0.0,无需额外配置)
🛡️ 安全建议(生产环境)
-
不要使用 root 用户直连应用,创建专用数据库用户:
CREATE USER 'appuser'@'%' IDENTIFIED BY 'strong-password'; GRANT ALL PRIVILEGES ON mydb.* TO 'appuser'@'%'; FLUSH PRIVILEGES; -
禁用远程 root 登录(可选):
在my.cnf中添加:[mysqld] bind-address = 0.0.0.0并在 MySQL 中执行:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your-new-password'; -
定期备份:使用
mysqldump或阿里云 RDS 备份策略。 -
考虑使用阿里云 RDS MySQL:如果用于生产,建议直接使用阿里云托管的 RDS,更安全、易维护。
🧹 常用管理命令
# 停止容器
docker stop mysql-container
# 启动容器
docker start mysql-container
# 删除容器(需先停止)
docker rm mysql-container
# 查看日志
docker logs -f mysql-container
# 重启容器
docker restart mysql-container
如有问题,欢迎提供具体错误信息,我可以进一步帮你排查!
云服务器