一、安装 Docker 环境

# 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg

# 创建密钥环目录
sudo mkdir -p /etc/apt/keyrings

# 下载并添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加 Docker APT 软件源
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

# 更新软件包索引
sudo apt update

# 安装 Docker 引擎及相关组件
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin

# 验证安装
sudo docker --version

# 启动并启用开机自启
sudo systemctl start docker
sudo systemctl enable docker

🔐 建议将当前用户加入 docker 组以避免每次使用 sudo

sudo usermod -aG docker $USER

重新登录终端生效。


二、创建测试用 docker-compose.yml(非持久化)

此版本适用于快速启动、临时测试,容器删除后数据将丢失

# 创建项目目录
mkdir ~/docker-mysql-redis && cd ~/docker-mysql-redis

docker-compose.yml(测试版 - 无数据卷)

version: '3.8'

services:
  mysql:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:5.7.40
    container_name: mysql-5.7.40
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: dbb_shop
    ports:
      - "3306:3306"
    command: [
      "--bind-address=0.0.0.0",
      "--character-set-server=utf8mb4",
      "--collation-server=utf8mb4_unicode_ci"
    ]
    # ⚠️ 无 volumes,数据不持久化

  redis:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:6-alpine
    container_name: redis-6.0
    restart: unless-stopped
    ports:
      - "6379:6379"
    command: [
      "--requirepass", "VwxY-z345A+b",
      "--appendonly", "yes"
    ]
    # ⚠️ 虽开启 AOF,但无挂载卷,重启后仍会丢失数据

启动服务

docker-compose up -d

三、客户端连接操作

🔌 连接 MySQL

mysql -h 127.0.0.1 -P 3306 -u root -p123456

提示:-p 后直接跟密码(无空格),或使用 -p 单独输入更安全。

🔌 连接 Redis

redis-cli -h 127.0.0.1 -p 6379 -a VwxY-z345A+b

建议首次连接后通过 ping 测试连通性:

127.0.0.1:6379> ping
PONG

四、进阶:支持数据持久化的 docker-compose.yml

当您需要保留数据(如用于预发环境或本地开发),请使用以下版本,通过 volumes 挂载数据目录。

docker-compose-persistent.yml(持久化版)

version: '3.8'

services:
  mysql:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:5.7.40
    container_name: mysql-5.7.40
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: dbb_shop
    ports:
      - "3306:3306"
    command: [
      "--bind-address=0.0.0.0",
      "--character-set-server=utf8mb4",
      "--collation-server=utf8mb4_unicode_ci"
    ]
    volumes:
      - ./data/mysql:/var/lib/mysql           # 数据文件持久化
      - ./conf/mysql:/etc/mysql/conf.d        # 可选:自定义配置

  redis:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:6-alpine
    container_name: redis-6.0
    restart: unless-stopped
    ports:
      - "6379:6379"
    command: [
      "--requirepass", "VwxY-z345A+b",
      "--appendonly", "yes"
    ]
    volumes:
      - ./data/redis:/data                    # AOF 和 RDB 文件保存位置

启动持久化服务

docker-compose -f docker-compose-persistent.yml up -d

📁 目录说明:

  • ./data/mysql: 存放 MySQL 数据
  • ./data/redis: 存放 Redis 持久化文件
  • ./conf/mysql: 可放置 .cnf 配置文件进行定制

五、常用管理命令

功能 命令
查看容器状态 docker-compose ps
查看日志 docker-compose logs -f
停止服务 docker-compose down
停止并删除数据(慎用) docker-compose down -v

六、总结

版本 用途 是否推荐用于生产
默认版(无 volume) 快速测试、CI/CD 临时环境 ❌ 不推荐
持久化版(有 volume) 开发、预发、需保留数据的场景 ✅ 推荐

💡 小贴士:

  • 使用华为云 SWR 镜像加速拉取速度。
  • 生产环境建议额外配置:网络隔离、密码加密、定期备份、资源限制等。
  • 可结合 Jenkins Pipeline 实现自动化部署(参考您的 CCE 发布流程)。

更多推荐