在阿里云 ECS 上安装 Docker 并运行 MySQL 镜像,可以分为以下几个步骤:
✅ 一、前提条件
- ECS 实例已运行(推荐 CentOS 7+/Ubuntu 18.04+)
- 拥有 root 或 sudo 权限
- 开放安全组端口:确保 ECS 安全组中放行了 MySQL 默认端口
3306(TCP),否则外部无法连接。
✅ 二、安装 Docker
1. 更新系统包
sudo yum update -y # CentOS/RHEL
# 或
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
2. 安装 Docker Engine
CentOS/RHEL:
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
sudo systemctl start docker
sudo systemctl enable docker
Ubuntu/Debian:
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
3. 验证 Docker 是否安装成功
docker --version
docker run hello-world
如果看到 Hello from Docker! 表示安装成功。
✅ 三、拉取并运行 MySQL 镜像
1. 拉取 MySQL 官方镜像
docker pull mysql:8.0
可选版本:
mysql:5.7、mysql:latest等
2. 创建本地目录用于数据持久化(推荐)
mkdir -p ~/mysql-data
chmod 777 ~/mysql-data # 简化权限设置,生产环境建议更严格
3. 启动 MySQL 容器
docker run --name mysql-container
-e MYSQL_ROOT_PASSWORD=your_secure_password
-e MYSQL_DATABASE=mydb
-e MYSQL_USER=dbuser
-e MYSQL_PASSWORD=dbpassword
-v ~/mysql-data:/var/lib/mysql
-p 3306:3306
-d mysql:8.0
参数说明:
| 参数 | 说明 |
|---|---|
--name |
容器名称 |
-e MYSQL_ROOT_PASSWORD |
root 用户密码(必填) |
-e MYSQL_DATABASE |
初始化时创建的数据库名 |
-e MYSQL_USER / MYSQL_PASSWORD |
创建普通用户和密码(可选) |
-v ~/mysql-data:/var/lib/mysql |
数据卷挂载,防止容器删除后数据丢失 |
-p 3306:3306 |
映射主机端口到容器端口 |
-d |
后台运行 |
✅ 四、验证 MySQL 是否正常运行
1. 查看容器状态
docker ps
应看到类似输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123def456 mysql:8.0 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp mysql-container
2. 进入容器内部测试连接
docker exec -it mysql-container mysql -u root -p
输入你设置的 MYSQL_ROOT_PASSWORD,若能登录成功,则 MySQL 运行正常。
3. 从宿主机连接 MySQL(可选)
mysql -h 127.0.0.1 -P 3306 -u root -p
或通过远程客户端(如 Navicat、DBeaver)连接 ECS 公网 IP 的 3306 端口。
✅ 五、常见问题排查
1. 无法远程连接?
- 检查 阿里云安全组 是否放行
3306端口(入方向 TCP)。 - 检查 MySQL 是否监听所有地址:
SHOW VARIABLES LIKE 'bind_address';
-- 应为 '*' 或 '0.0.0.0'
若为 127.0.0.1,需修改 MySQL 配置或使用 --bind-address=0.0.0.0 启动。
2. 容器启动失败?
查看日志:
docker logs mysql-container
常见原因:端口冲突、密码不符合复杂度要求、磁盘空间不足等。
3. 数据持久化问题?
确保 -v 挂载路径存在且权限正确。也可使用 Docker Volume:
docker volume create mysql-data
docker run ... -v mysql-data:/var/lib/mysql ...
✅ 六、(可选)使用 Docker Compose 管理
创建 docker-compose.yml:
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql-container
environment:
MYSQL_ROOT_PASSWORD: your_secure_password
MYSQL_DATABASE: mydb
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbpassword
volumes:
- ./mysql-data:/var/lib/mysql
ports:
- "3306:3306"
restart: always
启动:
docker compose up -d
✅ 总结
| 步骤 | 命令 |
|---|---|
| 安装 Docker | yum/apt install docker |
| 启动服务 | systemctl start docker |
| 拉取镜像 | docker pull mysql:8.0 |
| 运行容器 | docker run ... mysql:8.0 |
| 验证 | docker ps, docker exec |
如需更高可用性,可考虑使用 阿里云 RDS MySQL 替代自建,但 Docker 方式适合开发、测试或小规模部署场景。
如有具体问题(如权限、网络、性能优化),欢迎继续提问!
轻量云Cloud