在京东云服务器(ECS)上使用 Docker 部署 MySQL 数据库是一个高效且标准化的流程。以下是详细步骤,涵盖从环境准备到安全配置的全过程:
✅ 前置条件
- 京东云 ECS 实例已创建并运行中。
- 拥有服务器
root或具有sudo权限的用户账户。 - 已安装 Docker 和 Docker Compose(推荐)。
- 安全组规则中开放了 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
🔐 步骤四:配置京东云安全组
- 登录 京东云控制台。
- 进入 弹性计算 > 云服务器。
- 找到你的 ECS 实例,点击 安全组 标签。
- 添加入方向规则:
- 协议类型: 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 版本
- 修改
docker-compose.yml中的image: mysql:8.0为新版本(如mysql:8.4)。 - 执行:
docker-compose down docker-compose pull docker-compose up -d - 注意:大版本升级前务必备份数据!
✅ 至此,你已在京东云 ECS 上成功通过 Docker 部署了 MySQL 数据库。如有问题,可提供具体错误日志进一步排查。
云知识CLOUD