在阿里云、腾讯云等国内主流云厂商的轻量应用服务器上安装 Docker,其实和在自己买的 ECS/CVM 或者物理机上装没什么本质区别。核心步骤都是:更新源 -> 安装依赖 -> 添加官方 GPG 密钥 -> 安装 Docker CE。
不过,因为轻量服务器配置通常不高(内存可能只有 1G-2G),且为了系统稳定性,有几个细节需要注意,比如 Swap 分区设置和内核参数优化。下面我把最稳妥、最通用的“官方推荐”流程梳理一遍,同时针对国内网络环境做一点适配。
前置准备:检查系统状态
登录到你的 Ubuntu 轻量服务器(通常是 SSH 连接)。先确认一下你的 Ubuntu 版本,Docker 对版本有要求,建议是 Ubuntu 20.04 LTS 或 22.04 LTS。如果是更老的版本(如 16.04/18.04),建议直接重装系统,别折腾了,兼容性太差。
lsb_release -a
确保系统是最新的:
sudo apt update && sudo apt upgrade -y
第一步:处理 Swap 问题(关键)
很多轻量服务器默认没有开启 Swap,或者 Swap 太小。Docker 在某些情况下对内存敏感,如果物理内存耗尽,进程会被 OOM Kill。虽然这不是安装 Docker 的必要步骤,但为了后续跑容器稳定,强烈建议检查并适当调整 vm.swappiness。
查看当前 swappiness 值:
cat /proc/sys/vm/swappiness
如果是 0 或很低,可以临时调整为 10(让系统在物理内存紧张时优先使用 Swap 而不是直接杀进程):
sudo sysctl vm.swappiness=10
注:这步不是必须,但属于运维最佳实践。
第二步:卸载旧版本(如果有)
如果你之前手动装过 docker.io 或 docker-engine,最好先清理掉,避免冲突。
sudo apt-get remove docker docker-engine docker.io containerd runc
第三步:安装 Docker 官方推荐方式
这是目前最标准、最不容易出错的方法。由于国内访问 Docker 官方源有时不稳定,我们可以选择直接使用 Ubuntu 自带的仓库(简单粗暴,适合新手)或者配置国内镜像提速(更专业)。
方案 A:最简单法(使用 Ubuntu 自带仓库)
对于轻量服务器,追求快速启动服务,直接用 apt 源里的版本是最省心的。
# 1. 安装必要依赖
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# 2. 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 3. 设置稳定版仓库
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. 更新索引并安装
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
注意:如果 curl 下载密钥失败,说明网络不通。这时候需要换用国内镜像源,见方案 B。
方案 B:国内环境友好型(推荐)
如果上面的命令卡住不动,大概率是 DNS 解析或网络问题。我们可以改用清华大学镜像源或者阿里镜像源来拉取软件包。
以阿里云为例(假设你用的是阿里云轻量):
-
修改 sources.list(可选,但推荐):
将/etc/apt/sources.list中的地址替换为阿里云 Ubuntu 镜像源,例如:deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse # 根据实际版本修改 focal (20.04) 或 jammy (22.04) -
安装 Docker:
此时再执行方案 A 的步骤 2-4,速度会快很多。
或者,你可以直接使用 snap 安装(如果你的 Ubuntu 支持 snap):
sudo snap install docker
缺点:Snap 版本的 Docker 权限管理比较严格,可能需要额外配置用户组,且占用磁盘稍多,不推荐在生产环境使用,仅用于测试。
第四步:验证安装与启动
安装完成后,Docker 服务通常会自动启动。检查状态:
sudo systemctl status docker
如果看到 active (running),说明正常。如果没有,手动启动:
sudo systemctl start docker
sudo systemctl enable docker
运行 Hello World 测试:
sudo docker run hello-world
如果输出了一堆信息,最后提示 “Hello from Docker!”,那就搞定了。
第五步:免 sudo 运行 Docker(提升体验)
默认情况下,每次运行 docker 命令都要加 sudo,很麻烦。我们可以把当前用户加入 docker 用户组。
# 创建 docker 组(如果不存在)
sudo groupadd docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 重启会话生效(或者直接注销重新登录)
newgrp docker
之后你就可以直接输入 docker ps 而不需要 sudo 了。
进阶优化:配置镜像提速器(必做)
在国内,拉取 Docker Hub 的镜像非常慢,甚至超时。必须配置镜像提速器。这里以阿里云为例(腾讯云也有类似的)。
- 登录阿里云控制台,找到“容器镜像服务”,获取你的专属提速器地址(格式类似
https://xxxxxx.mirror.aliyuncs.com)。 - 编辑 Docker 配置文件:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://你的专属提速器地址.mirror.aliyuncs.com"]
}
EOF
- 重启 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
常见坑点提醒
- 内核模块缺失:某些轻量服务器使用的是定制内核,可能缺少
overlay2存储驱动所需的内核模块。如果 Docker 启动失败,查看日志journalctl -xeu docker。如果遇到kernel version not supported错误,可能需要升级内核或使用vfs驱动(性能较差,不推荐)。 - 防火墙问题:轻量服务器通常开启了安全组。如果你要在宿主机上暴露端口(如
-p 80:80),记得去云厂商的控制台里,在“防火墙”或“安全组”规则中放行对应端口。 - 内存不足:如果服务器内存小于 1GB,跑多个容器容易 OOM。建议限制单个容器的内存使用,或者增加 Swap。
总结
在 Ubuntu 轻量服务器上装 Docker,核心就是:更新系统 -> 添加官方源/GPG密钥 -> apt install docker-ce -> 配置镜像提速。整个过程不到 5 分钟。只要网络通畅,基本不会遇到什么大坑。装完后,记得顺手配个镜像提速,否则后续拉镜像会让你怀疑人生。
云技术博客