加油
努力

使用腾讯云服务器时如何正确配置Docker运行环境?

在腾讯云服务器(CVM)上正确配置 Docker 运行环境,需结合腾讯云的网络、安全组、镜像源及最佳实践。以下是详细、安全、生产就绪的配置步骤(以 Ubuntu 22.04/20.04 或 CentOS 7/8 为例,推荐 Ubuntu 22.04 LTS):


✅ 一、前期准备(腾讯云侧配置)

  1. 选择合适实例规格

    • 推荐:2核4GB 起(Docker 容器运行+基础服务);如部署数据库/高并发服务,按需升级。
    • 系统盘建议 ≥ 50GB(Docker 镜像、容器层、日志会占用空间)。
  2. 配置安全组(关键!)

    • 放行必要端口(最小化原则):
      • 22/tcp(SSH)
      • 80/tcp, 443/tcp(Web 服务)
      • 自定义服务端口(如 3000/tcp, 8080/tcp
      • 禁止开放 2375/tcp(Docker Daemon 默认未加密端口)或 2376/tcp(TLS 端口)给公网 —— 除非你明确需要远程 API 且已配置 TLS 认证(不推荐新手暴露)。
    • 说明:Docker daemon 默认仅监听 unix:///var/run/docker.sock,本地安全;无需也不应开放远程 TCP 端口。
  3. 选择镜像源(提速国内拉取)

    • 创建实例时可选「腾讯云官方镜像」(已预装常用工具),或使用 Ubuntu/CentOS 官方镜像 + 配置腾讯云 Docker 镜像提速器(见下文)。

✅ 二、登录服务器并安装 Docker(推荐使用官方脚本,非 apt 默认旧版)

▶ Ubuntu/Debian(推荐)

# 1. 更新系统 & 安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg2 software-properties-common ca-certificates

# 2. 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 3. 添加稳定版仓库(注意:根据系统版本替换 `$(lsb_release -cs)`,如 jammy/focal)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 4. 更新包索引并安装 Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 5. 【重要】配置腾讯云镜像提速器(大幅提升 pull 速度)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}
EOF

# 6. 重启 Docker 并设为开机自启
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

# 7. 验证安装
sudo docker --version
sudo docker run hello-world  # 首次运行会下载测试镜像(应成功输出)

▶ CentOS/RHEL(如 CentOS 7/8)

# 启用 EPEL(CentOS 7)
sudo yum install -y epel-release

# 卸载旧版(如有)
sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加 Docker 官方仓库
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-buildx-plugin docker-compose-plugin

# 配置腾讯云镜像提速器(同上)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
  "log-driver": "json-file",
  "log-opts": {"max-size": "100m", "max-file": "3"}
}
EOF

sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl enable docker

# 验证
sudo docker run hello-world

💡 为什么用 mirror.ccs.tencentyun.com
这是腾讯云官方 Docker 镜像提速器,位于腾讯云内网,免流量费、低延迟、高可用,比第三方镜像源更稳定可靠(官方文档)。


✅ 三、权限与安全加固(生产必备)

1. 允许普通用户免 sudo 使用 Docker(避免 root 权限滥用)

# 创建 docker 组(如不存在)
sudo groupadd docker

# 将当前用户加入 docker 组
sudo usermod -aG docker $USER

# 生效(需重新登录或执行)
newgrp docker  # 或退出终端重连

✅ 验证:docker ps 不报 permission denied 即成功。

2. (可选)限制容器资源,防失控

# 示例:运行容器时限制内存和 CPU(生产环境强烈建议)
docker run -d 
  --name nginx-limited 
  --memory=512m 
  --cpus=1.0 
  -p 8080:80 
  nginx:alpine

3. (重要)禁用不安全配置

  • ✅ 确保 /etc/docker/daemon.json没有 "host": "tcp://0.0.0.0:2375"(禁用未加密远程 API)
  • ✅ 若需远程管理,请使用 SSH 隧道或配置 TLS(参考 Docker 官方 TLS 文档)

✅ 四、进阶建议(生产环境)

项目 推荐做法
容器编排 单机用 docker-compose(已随 docker-compose-plugin 安装);多机集群用 Tencent Kubernetes Engine(TKE)——腾讯云托管 K8s,比自建 Swarm 更稳
数据持久化 永远使用 -v /data/nginx:/usr/share/nginx/html 或命名卷 docker volume create myvol禁止直接写容器内文件系统
日志管理 配置 log-opts(如上)+ 结合腾讯云 CLS(日志服务)采集 /var/lib/docker/containers/*/*.log
镜像安全 使用 docker scan <image>(需 docker scan 插件)或集成腾讯云「容器镜像服务 TCR」进行漏洞扫描与私有镜像托管
备份策略 定期备份:/var/lib/docker/volumes/(卷数据)、/etc/docker/daemon.jsondocker-compose.yml 文件

✅ 五、常见问题排查

现象 解决方案
Cannot connect to the Docker daemon 检查 sudo systemctl status docker → 是否 running?是否用户在 docker 组?
pull access denied 检查是否登录私有仓库 docker login tcr.tencentcloudcr.com(如用 TCR)
no space left on device 清理:docker system prune -a(慎用)+ docker volume prune + 检查磁盘 df -h
Connection refused when pulling 检查 /etc/docker/daemon.json 镜像源格式是否 JSON 合法(用 jq . /etc/docker/daemon.json 验证)

📌 总结:最佳实践清单

  • ✅ 使用腾讯云官方镜像提速器 mirror.ccs.tencentyun.com
  • ✅ 禁止开放 Docker daemon 的 TCP 端口(默认 unix socket 最安全)
  • ✅ 将用户加入 docker 组,避免长期使用 sudo docker
  • ✅ 配置日志轮转与资源限制
  • ✅ 敏感服务(如数据库)用 --network=host 或自定义 bridge 网络隔离
  • ✅ 定期更新 Docker:sudo apt update && sudo apt install docker-ce(Ubuntu)

如需一键脚本自动化部署,我可为你生成适配 Ubuntu/CentOS 的 .sh 安装脚本(含错误处理与腾讯云镜像检测)。欢迎继续提问 👇
也欢迎告知你的具体场景(如:部署 Spring Boot?WordPress?Nginx 反向X_X?),我可以提供针对性配置示例。

云服务器