在腾讯云CVM上如何正确安装和配置Docker?

在腾讯云 CVM(云服务器)上部署 Docker,核心在于确保环境兼容性、依赖完整性以及后续的安全加固。作为长期处理云原生基础设施的从业者,我建议不要直接通过简单的 apt-get 或 yum install docker 安装系统默认源中的版本,因为那往往滞后且缺乏维护支持。

以下是基于主流 Linux 发行版(CentOS/RHEL 系列和 Ubuntu/Debian 系列)的标准、合规且稳定的安装与配置流程。

一、 前置检查与环境准备

在执行任何安装操作前,必须确认内核版本和架构符合 Docker 的要求。Docker 要求内核版本至少为 3.10(CentOS 7+)或 4.4+(Ubuntu 16.04+),且建议开启 cgroup 和 namespace 功能。

  1. 确认操作系统类型
    cat /etc/os-release
    uname -r
  2. 清理残留环境(如果之前尝试过非官方安装)
    sudo yum remove docker 
     docker-client 
     docker-client-latest 
     docker-common 
     docker-latest 
     docker-latest-logrotate 
     docker-logrotate 
     docker-engine

二、 安装 Docker Engine

推荐使用 Docker 官方提供的仓库进行安装,以确保获取到最新稳定版并获得自动更新能力。

场景 A:CentOS / RHEL / Alibaba Cloud Linux (RedHat 系)

  1. 安装依赖包

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. 设置 Docker 官方 YUM 源

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. 安装 Docker CE

    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

场景 B:Ubuntu / Debian (Debian 系)

  1. 更新 apt 索引并安装依赖

    sudo apt-get update
    sudo apt-get install ca-certificates curl gnupg lsb-release
  2. 添加 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
  3. 设置 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
  4. 安装 Docker CE

    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

三、 关键配置与优化

安装完成后,直接启动往往无法满足生产需求,需进行以下配置。

1. 设置开机自启并启动服务

sudo systemctl enable docker
sudo systemctl start docker

验证是否成功:

sudo docker run hello-world

2. 配置镜像提速器(国内网络必需)

由于国内访问 Docker Hub 速度受限甚至不稳定,强烈建议配置腾讯云或其他厂商的镜像提速器。

以腾讯云容器镜像服务(TCR)为例:

  1. 登录腾讯云控制台,进入“容器镜像服务”。
  2. 创建命名空间(如 my-project)。
  3. 获取提速地址,通常格式为:https://mirror.ccs.tencentyun.com
  4. 修改 Docker 配置文件 /etc/docker/daemon.json:
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

注意:exec-opts 设置为 systemd 是为了让 Docker 使用 systemd 作为 cgroup 驱动,这与 CentOS 7+ 和 Ubuntu 的现代标准一致,有助于资源隔离和管理。

  1. 重启 Docker 服务使配置生效:
    sudo systemctl daemon-reload
    sudo systemctl restart docker

3. 非 Root 用户使用 Docker

为避免每次执行 docker 命令都需加 sudo,可创建 docker 用户组并将当前用户加入其中:

sudo groupadd docker
sudo usermod -aG docker $USER

注销并重新登录后,即可直接使用 docker ps 等命令。

四、 安全与运维建议

  1. 防火墙策略
    腾讯云 CVM 默认启用安全组。若需外部访问容器端口,务必在腾讯云控制台 -> 安全组中放行对应端口,而非仅依赖主机内部 iptables 或 firewalld。这是云环境下的最佳实践。

  2. 日志轮转
    上述 daemon.json 配置中已包含日志大小限制(max-size: 100m, max-file: 3),防止容器日志撑爆磁盘。请定期检查 /var/lib/docker/containers/ 下的日志文件。

  3. 权限最小化
    避免将敏感数据(如 SSH 私钥、数据库密码)硬编码在 Dockerfile 中。建议使用 Docker Secrets、环境变量注入或挂载只读卷的方式管理配置。

  4. 定期更新
    虽然 Docker 更新频繁,但建议每月检查一次可用版本,并通过包管理器平滑升级,以保持安全补丁及时到位。

五、 常见问题排查

  • 问题:启动容器时报错 permission denied。
    解决:检查是否属于 docker 用户组;检查 SELinux 状态(CentOS 下可使用 setenforce 0 测试,生产环境应正确配置 SELinux 策略而非关闭)。

  • 问题:拉取镜像超时。
    解决:确认 /etc/docker/daemon.json 中的 registry-mirrors 配置是否正确,且网络连接正常。也可尝试更换其他公共镜像源。

  • 问题:容器内时间不对。
    解决:宿主机与容器共享内核时,时间通常同步。若不一致,检查宿主机时区设置及 NTP 服务状态。

通过以上步骤,你可以在腾讯云 CVM 上构建一个稳定、高效且安全的 Docker 运行环境。对于更复杂的编排需求,建议进一步学习 Kubernetes(K8s)或使用腾讯云的 TKE(托管 Kubernetes 服务)来替代单机 Docker 管理。

未经允许不得转载:CLOUD云枢 » 在腾讯云CVM上如何正确安装和配置Docker?