努力
加油

在阿里云轻量服务器上如何正确安装Docker?

在阿里云轻量应用服务器(Simple Application Server, SAS)上安装 Docker,其实和在其他 Linux 发行版上没有本质区别,但考虑到轻量服务器的资源限制(通常是 1核2G 或 2核4G起步)以及阿里云环境的特殊性,有几个“坑”需要避开。

最稳妥、最省心的方案是:使用阿里云官方预装镜像 + 手动启用 Docker 服务,或者 基于纯净 Linux 镜像通过官方脚本一键安装。

下面分两种场景给你实操指南,按推荐程度排序。


方案一:如果你还没买服务器,或者可以重装系统(强烈推荐)

阿里云轻量应用服务器有一个巨大的优势:官方镜像市场里有大量预装好常用软件的镜像。

  1. 创建实例时:

    • 选择镜像时,不要选“CentOS”、“Ubuntu”等基础镜像。
    • 去【镜像市场】里找带有 “Docker” 标签的镜像。比如“WordPress+Docker”、“LNMP+Docker”或者直接搜“Docker CE”。
    • 这些镜像已经帮你配好了内核参数、存储驱动和依赖库,开箱即用。
  2. 如果已经买了纯净 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

❓ 常见问题排查

  1. Docker 启动失败?

    • 检查 journalctl -u docker.service --no-pager -n 50 看日志。
    • 常见原因:containerd 未启动、磁盘空间不足、SELinux 未关闭(CentOS 可临时 setenforce 0 测试)。
  2. 拉取镜像慢?

    • 国内阿里云镜像提速器必须配置!
    • 编辑 /etc/docker/daemon.json,添加:
      {
      "registry-mirrors": ["https://<你的专属ID>.mirror.aliyuncs.com"]
      }
    • 获取专属提速地址:登录阿里云控制台 → 容器镜像服务 → 个人版 → 镜像提速器。
  3. Swap 没生效?

    • 轻量服务器有时会自动禁用 Swap,确保 /etc/fstab 中有记录,且 swapon -s 能看到 swap 文件。

✅ 总结建议

  • 新手/求稳:直接买带 Docker 的官方镜像,省心省力。
  • 已有服务器:用上述脚本安装,记得开 Swap、配镜像提速器、改网桥 IP、开安全组。
  • 生产环境:轻量服务器不适合跑高负载业务,仅适合学习、个人博客、小型项目。正式项目请考虑 ECS + Kubernetes 或 ACK。

这样操作下来,你的 Docker 就能在阿里云轻量服务器上稳定运行了。