如何在京东云服务器上使用Docker部署MySQL数据库?

在京东云服务器(ECS)上使用 Docker 部署 MySQL 数据库是一个高效且标准化的流程。以下是详细步骤,涵盖从环境准备到安全配置的全过程:


✅ 前置条件

  1. 京东云 ECS 实例已创建并运行中。
  2. 拥有服务器 root 或具有 sudo 权限的用户账户。
  3. 已安装 Docker 和 Docker Compose(推荐)。
  4. 安全组规则中开放了 MySQL 默认端口 3306(仅允许特定 IP 访问更佳)。

🚀 步骤一:安装 Docker 和 Docker Compose

1. 更新系统包

sudo yum update -y

2. 安装 Docker Engine

# 添加 Docker 官方 YUM 仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装 Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动 Docker 服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
docker --version

3. 安装 Docker Compose(可选但推荐)

# 下载最新稳定版 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

💡 如果你使用的是 Ubuntu 系统,请将 yum 替换为 apt,并使用 apt-get 命令。


🗂️ 步骤二:创建项目目录与配置文件

1. 创建目录结构

mkdir -p ~/mysql-docker/data
cd ~/mysql-docker

2. 创建 docker-compose.yml 文件

version: '3.8'

services:
  mysql:
    image: mysql:8.0          # 使用 MySQL 8.0 镜像
    container_name: my-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_strong_password_here   # ⚠️ 请修改为强密码
      MYSQL_DATABASE: mydb               # 初始创建的数据库名
      MYSQL_USER: myuser                 # 普通用户名
      MYSQL_PASSWORD: myuser_password    # 普通用户密码
    ports:
      - "3306:3306"                      # 映射宿主机端口
    volumes:
      - ./data:/var/lib/mysql            # 数据持久化
      - ./conf/my.cnf:/etc/mysql/conf.d/my.cnf  # 自定义配置(可选)
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

3. (可选)创建自定义 MySQL 配置 my.cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=200
innodb_buffer_pool_size=1G   # 根据服务器内存调整

保存为 ./conf/my.cnf,并确保目录存在:

mkdir -p ./conf

▶️ 步骤三:启动 MySQL 容器

cd ~/mysql-docker
docker-compose up -d

查看容器状态:

docker-compose ps
docker logs my-mysql

🔐 步骤四:配置京东云安全组

  1. 登录 京东云控制台。
  2. 进入 弹性计算 > 云服务器。
  3. 找到你的 ECS 实例,点击 安全组 标签。
  4. 添加入方向规则:
    • 协议类型: TCP
    • 端口范围: 3306
    • 授权对象: 建议填写你的固定 IP(如 123.45.67.89/32),切勿设置为 0.0.0.0/0,以防被暴力破解。

🧪 步骤五:验证连接

方法 1:通过 Docker 内部测试

docker exec -it my-mysql mysql -u root -p
# 输入密码后,执行:
SHOW DATABASES;
EXIT;

方法 2:从本地电脑连接

使用 MySQL 客户端(如 Navicat、DBeaver、MySQL Workbench 或命令行):

mysql -h <你的京东云公网IP> -P 3306 -u myuser -p

⚠️ 注意:如果无法连接,请检查:

  • 安全组是否放行 3306 端口;
  • MySQL 是否监听所有地址(默认行为);
  • 防火墙是否阻止(CentOS 7+ 使用 firewalld,Ubuntu 使用 ufw)。

🛡️ 安全最佳实践

措施 说明
强密码 使用复杂密码,避免弱口令
最小权限原则 不要直接用 root 远程连接,创建专用用户并限制权限
限制 IP 访问 安全组中只允许可信 IP 访问 3306 端口
启用 SSL/TLS 在生产环境中为 MySQL 配置 SSL 加密传输
定期备份 使用 mysqldump 或京东云快照功能定期备份数据
更新镜像 定期拉取最新 MySQL 镜像以修复安全漏洞

🔄 后续维护

查看日志

docker logs -f my-mysql

停止/重启容器

docker-compose stop
docker-compose start

升级 MySQL 版本

  1. 修改 docker-compose.yml 中的 image: mysql:8.0 为新版本(如 mysql:8.4)。
  2. 执行:
    docker-compose down
    docker-compose pull
    docker-compose up -d
  3. 注意:大版本升级前务必备份数据!

✅ 至此,你已在京东云 ECS 上成功通过 Docker 部署了 MySQL 数据库。如有问题,可提供具体错误日志进一步排查。

未经允许不得转载:云知识CLOUD » 如何在京东云服务器上使用Docker部署MySQL数据库?