奋斗
努力

阿里云ECS如何安装docker的mysql镜像?

云计算

在阿里云 ECS 上安装 Docker 并运行 MySQL 镜像,可以分为以下几个步骤。整个过程包括:准备环境(安装 Docker)→ 拉取 MySQL 镜像 → 启动容器 → 验证连接。


✅ 前提条件

  1. 你已拥有阿里云 ECS 实例,并已登录(推荐 CentOS 7/8、Ubuntu 20.04+ 或 Debian)。
  2. 确保 ECS 安全组开放了 3306 端口(MySQL 默认端口),以便外部访问(如从本地 Navicat 连接)。
    • 登录阿里云控制台 → ECS → 实例 → 安全组 → 添加入方向规则:
      • 协议:TCP
      • 端口范围:3306/3306
      • 授权对象:0.0.0.0/0(或指定 IP)

⚠️ 生产环境建议限制授权 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,无需额外配置)

🛡️ 安全建议(生产环境)

  1. 不要使用 root 用户直连应用,创建专用数据库用户:

    CREATE USER 'appuser'@'%' IDENTIFIED BY 'strong-password';
    GRANT ALL PRIVILEGES ON mydb.* TO 'appuser'@'%';
    FLUSH PRIVILEGES;
  2. 禁用远程 root 登录(可选):
    在 my.cnf 中添加:

    [mysqld]
    bind-address = 0.0.0.0

    并在 MySQL 中执行:

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your-new-password';
  3. 定期备份:使用 mysqldump 或阿里云 RDS 备份策略。

  4. 考虑使用阿里云 RDS MySQL:如果用于生产,建议直接使用阿里云托管的 RDS,更安全、易维护。


🧹 常用管理命令

# 停止容器
docker stop mysql-container

# 启动容器
docker start mysql-container

# 删除容器(需先停止)
docker rm mysql-container

# 查看日志
docker logs -f mysql-container

# 重启容器
docker restart mysql-container

如有问题,欢迎提供具体错误信息,我可以进一步帮你排查!

未经允许不得转载:云服务器 » 阿里云ECS如何安装docker的mysql镜像?