在阿里云轻量应用服务器(Simple Application Server, SAS)上安装 Docker,其实和在其他 Linux 发行版上没有本质区别,但考虑到轻量服务器的资源限制(通常是 1核2G 或 2核4G起步)以及阿里云环境的特殊性,有几个“坑”需要避开。
最稳妥、最省心的方案是:使用阿里云官方预装镜像 + 手动启用 Docker 服务,或者 基于纯净 Linux 镜像通过官方脚本一键安装。
下面分两种场景给你实操指南,按推荐程度排序。
方案一:如果你还没买服务器,或者可以重装系统(强烈推荐)
阿里云轻量应用服务器有一个巨大的优势:官方镜像市场里有大量预装好常用软件的镜像。
-
创建实例时:
- 选择镜像时,不要选“CentOS”、“Ubuntu”等基础镜像。
- 去【镜像市场】里找带有 “Docker” 标签的镜像。比如“WordPress+Docker”、“LNMP+Docker”或者直接搜“Docker CE”。
- 这些镜像已经帮你配好了内核参数、存储驱动和依赖库,开箱即用。
-
如果已经买了纯净 Linux 镜像:
- 登录服务器后,直接执行阿里云推荐的 Docker 安装脚本即可(见方案二)。
为什么推荐这个?
因为轻量服务器默认的内核版本可能较老,手动编译或配置某些高级特性容易出错。官方镜像经过测试,兼容性最好。
方案二:在已运行的 CentOS/Ubuntu/Debian 上手动安装 Docker
这是通用做法,适用于任何 Linux 发行版。我们以目前轻量服务器最常用的 CentOS 7/8 和 Ubuntu 20.04/22.04 为例。
⚠️ 前置检查(关键!)
轻量服务器内存小,务必先开启 Swap(交换空间),否则跑几个容器就 OOM(内存溢出)崩溃。
# 查看当前内存使用情况
free -h
# 如果可用内存小于 512M,建议创建 2G swap
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab
🐧 Ubuntu / Debian 用户
Ubuntu 对 Docker 支持最好,步骤最简单:
# 1. 更新包索引
sudo apt-get update
# 2. 安装依赖
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
# 3. 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 4. 设置稳定版仓库
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
# 5. 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 6. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 7. 验证
docker --version
docker run hello-world
🐹 CentOS / RHEL 用户
CentOS 稍微麻烦点,尤其是 CentOS 7 和 8 Stream 的区别。
# 1. 移除旧版本(如果有)
sudo yum remove -y docker docker-common docker-selinux docker-engine
# 2. 安装 yum-utils
sudo yum install -y yum-utils
# 3. 添加 Docker 官方 YUM 源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4. 安装 Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 5. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 6. 验证
docker --version
docker run hello-world
注意:CentOS 8 已停止维护,建议直接使用 CentOS Stream 8 或 Rocky Linux 9。如果使用 CentOS 7,请注意其内核较老,部分新特性(如 cgroup v2)可能需要额外配置。
🛡️ 阿里云环境特别优化(必做!)
在阿里云轻量服务器上,Docker 默认的网络桥接(bridge)模式可能与阿里云的安全组或 NAT 网关冲突,导致外部无法访问容器端口。
1. 修改 Docker 默认网桥 IP(避免冲突)
阿里云内部网络常使用 172.17.0.0/16 或类似段,而 Docker 默认也占用这个段,容易冲突。
# 编辑 daemon.json
sudo vi /etc/docker/daemon.json
添加以下内容(假设你希望 Docker 使用 192.168.0.0/16 网段):
{
"storage-driver": "overlay2",
"default-address-pools": [
{
"base": "192.168.0.0/16",
"size": 24
}
]
}
然后重启 Docker:
sudo systemctl restart docker
2. 开放安全组端口
Docker 运行后,你映射的端口(如 -p 80:80)必须要在阿里云控制台的 防火墙(安全组) 中放行。
- 登录阿里云控制台 → 轻量应用服务器 → 防火墙 → 添加规则。
- 协议:TCP,端口:你容器映射的端口(如 80, 3306, 22 等),来源:0.0.0.0/0。
3. 使用非 root 用户运行 Docker(可选但推荐)
为了安全,建议创建一个普通用户来管理 Docker:
sudo groupadd docker
sudo usermod -aG docker $USER
# 注销重新登录生效
newgrp docker
❓ 常见问题排查
-
Docker 启动失败?
- 检查
journalctl -u docker.service --no-pager -n 50看日志。 - 常见原因:
containerd未启动、磁盘空间不足、SELinux 未关闭(CentOS 可临时setenforce 0测试)。
- 检查
-
拉取镜像慢?
- 国内阿里云镜像提速器必须配置!
- 编辑
/etc/docker/daemon.json,添加:{ "registry-mirrors": ["https://<你的专属ID>.mirror.aliyuncs.com"] } - 获取专属提速地址:登录阿里云控制台 → 容器镜像服务 → 个人版 → 镜像提速器。
-
Swap 没生效?
- 轻量服务器有时会自动禁用 Swap,确保
/etc/fstab中有记录,且swapon -s能看到 swap 文件。
- 轻量服务器有时会自动禁用 Swap,确保
✅ 总结建议
- 新手/求稳:直接买带 Docker 的官方镜像,省心省力。
- 已有服务器:用上述脚本安装,记得开 Swap、配镜像提速器、改网桥 IP、开安全组。
- 生产环境:轻量服务器不适合跑高负载业务,仅适合学习、个人博客、小型项目。正式项目请考虑 ECS + Kubernetes 或 ACK。
这样操作下来,你的 Docker 就能在阿里云轻量服务器上稳定运行了。
云技术博客