努力
加油

腾讯云轻量应用服务器如何安装和配置Docker?

在腾讯云轻量应用服务器(Lighthouse)上安装 Docker,核心逻辑和你在普通 ECS 或自建服务器上是一样的。但作为“轻量级”产品,它有一些特定的前置条件需要注意,尤其是网络连通性和系统版本的选择。

下面是一份基于实战经验的配置指南,去掉了废话,直接上干货。

一、 前置检查:你选对镜像了吗?

这是最容易踩坑的地方。腾讯云轻量应用服务器的镜像分为两类:

  1. Docker 预装镜像:如果你购买时直接选了“Docker 20.xx”或者“WordPress + Docker”这类组合镜像,系统里已经自带了 Docker 和 Docker Compose,跳过以下步骤,直接验证版本即可。
  2. Linux 通用镜像:如果你用的是 CentOS 7/8, Ubuntu 18.04/20.04/22.04, Debian 等纯净版镜像,则需要手动安装。

建议:对于生产环境,强烈推荐使用 Ubuntu 22.04 LTS 或 Debian 11+。CentOS 7 已停止维护,虽然还能用,但后续软件源支持会越来越差;CentOS Stream 或 Rocky Linux 也是不错的选择。以下以 Ubuntu 22.04 为例,其他发行版命令略有不同,我会标注。


二、 安装 Docker Engine

方案 A:使用官方脚本一键安装(推荐新手)

这是最稳妥的方式,自动处理依赖和 GPG 密钥。

# 1. 下载官方安装脚本
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 注意:加了 --mirror Aliyun 参数,在国内拉取镜像速度会快很多

方案 B:手动安装(适合喜欢掌控细节的人)

Ubuntu/Debian:

# 1. 更新包索引
sudo apt-get update

# 2. 安装依赖
sudo apt-get install ca-certificates curl gnupg lsb-release

# 3. 添加 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

# 4. 设置稳定版仓库(国内提速)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 5. 再次更新并安装
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

CentOS/RHEL:

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

启动并设置开机自启

sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker # 确认状态是 active (running)

三、 关键配置:免 sudo 运行 & 镜像提速

1. 允许当前用户免 sudo 运行 Docker

默认情况下,Docker 守护进程绑定的是 Unix 套接字,只有 root 或 docker 组成员才能操作。为了方便开发,我们创建一个 docker 组并把你的用户加进去。

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

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

# 生效更改(需要重新登录终端或执行以下命令)
newgrp docker

# 验证是否成功,不加 sudo 也能跑
docker ps

2. 配置国内镜像提速器(必做!)

腾讯云轻量服务器通常内网访问阿里云、腾讯云的镜像源很快,但为了拉取 Docker Hub 的官方镜像更快,建议配置阿里云或腾讯云提供的镜像提速地址。

腾讯云专属提速(推荐):
登录腾讯云控制台 -> 容器服务 -> 镜像提速器,获取你的专属地址。假设地址是 https://xxx.mirror.ccr.tencentyun.com。

编辑 daemon.json:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://<你的腾讯云镜像提速地址>",
    "https://mirror.ccs.tencentyun.com" 
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF

注意:cgroupdriver=systemd 是为了防止在某些 Linux 发行版下出现 cgroup 警告,特别是 Kubernetes 相关组件时很重要。

重启 Docker 使配置生效:

sudo systemctl daemon-reload
sudo systemctl restart docker

四、 安全与防火墙配置

腾讯云轻量应用服务器有自己的“防火墙”规则,而不是直接用 iptables 或 firewalld。

  1. 腾讯云控制台设置:

    • 进入轻量应用服务器控制台 -> 防火墙 -> 添加入方向规则。
    • 开放你需要暴露的端口(如 80, 443, 8080, 2376 等)。
    • 重要:除非你明确知道自己在做什么,否则不要开放 Docker 的远程 API 端口(2375 或 2376),这会带来极大的安全风险。
  2. 本地防火墙(可选):

    • 如果你安装了 ufw (Ubuntu) 或 firewalld (CentOS),确保它们没有拦截 Docker 创建的虚拟网卡流量。
    • 通常 Docker 会自动管理 iptables/nftables 规则,只要云厂商的防火墙放行了端口,本地防火墙一般不需要额外干预。

五、 验证安装

运行一个简单的测试容器:

docker run --rm hello-world

如果看到 “Hello from Docker!” 并且顺利退出,说明安装成功。

再试试 Docker Compose(如果安装了 plugin):

docker compose version

六、 常见问题排查(Troubleshooting)

  1. 报错 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

    • 原因:Docker 服务没启动。
    • 解决:sudo systemctl start docker
  2. 拉取镜像特别慢

    • 原因:未配置镜像提速。
    • 解决:检查 /etc/docker/daemon.json 中的 registry-mirrors 是否配置正确,并重启 Docker。
  3. 权限拒绝 permission denied

    • 原因:当前用户不在 docker 组中。
    • 解决:执行 sudo usermod -aG docker $USER,然后注销并重新登录 SSH 会话(这点很关键,newgrp 有时不彻底)。
  4. Kubernetes 部署报错 cgroup 问题

    • 原因:kubelet 期望 systemd 作为 cgroup driver,而 Docker 默认可能是 cgroupfs。
    • 解决:在 daemon.json 中添加 "exec-opts": ["native.cgroupdriver=systemd"],然后重启 Docker 和 kubelet。

总结

在腾讯云轻量应用服务器上装 Docker,90% 的工作在于选择合适的 Linux 镜像和配置好镜像提速器。一旦基础环境搞定,剩下的就是标准的 Docker 操作。记得定期清理无用镜像和容器,轻量服务器的磁盘空间通常不大:

# 定期清理
docker system prune -a --volumes

这样就能保持一个干净、高效的开发/运行环境。