努力
加油

在阿里云轻量服务器上如何安装和配置Docker?

在阿里云轻量应用服务器(Simple Application Server,简称 SAS)上部署 Docker 其实比在 ECS 上更“无脑”一些,因为轻量服务器的镜像通常已经预装了很多基础环境,但为了稳定性和安全性,手动安装或确认版本依然是标准操作。

下面是一套经过实战验证、去除了废话的完整流程。我会把坑和注意事项都标出来。

第一步:前置检查与系统更新

轻量服务器默认通常是 CentOS 7.9、Ubuntu 20.04/22.04 或 Debian 10/11。不同发行版的命令略有差异,以下以最常见的 CentOS 7 和 Ubuntu/Debian 为例。

通用建议:
先更新系统包,防止依赖冲突。

# CentOS / RHEL
sudo yum update -y

# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y

第二步:安装 Docker Engine

目前官方推荐使用 docker-ce (Community Edition)。不要直接用 yum install docker 这种老方式,容易装上旧版或者非社区维护的版本。

场景 A:如果你使用的是 CentOS / Alibaba Cloud Linux

阿里云轻量服务器很多是自带 Docker 的,你可以先检查一下:

docker --version

如果版本很老(比如 18.09 以前),或者你想用最新版,请执行以下标准安装脚本:

  1. 卸载旧版本(如果有)

    sudo yum remove docker 
                   docker-client 
                   docker-client-latest 
                   docker-common 
                   docker-latest 
                   docker-logrotate 
                   docker-compose-plugin 
                   docker-engine
  2. 设置稳定仓库

    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. 安装 Docker 引擎、容器和插件

    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  4. 启动并设置开机自启

    sudo systemctl start docker
    sudo systemctl enable docker
  5. 验证安装

    sudo docker run hello-world

    看到 "Hello from Docker!" 就说明成功了。

场景 B:如果你使用的是 Ubuntu / Debian

# 1. 安装必要依赖
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. 设置仓库
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
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 5. 启动服务
sudo systemctl start docker
sudo systemctl enable docker

第三步:关键配置——免 sudo 运行 & 提速镜像

这一步不做,后续你会非常痛苦。

1. 允许当前用户直接运行 docker 命令(可选但推荐)

默认情况下,只有 root 用户可以运行 docker。如果你不想每次敲命令都加 sudo:

sudo groupadd docker
sudo usermod -aG docker $USER
# 注意:修改组后需要重新登录 SSH 会话才能生效,或者重启服务器

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

阿里云轻量服务器在国内,默认拉取 Docker Hub 的速度可能很慢,尤其是拉取 ubuntu, nginx, redis 等基础镜像时。

方法一:使用阿里云专属提速(最快)
登录阿里云控制台,进入“容器镜像服务”,复制你的个人提速地址。然后编辑 daemon.json:

sudo vi /etc/docker/daemon.json

填入以下内容(将 xxxxxx.mirror.aliyuncs.com 替换为你自己的地址):

{
  "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}

方法二:如果没有阿里云账号,使用公共提速源

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://huecker.io",
    "https://dockerhub.timeweb.cloud"
  ]
}

重启 Docker 使配置生效:

sudo systemctl daemon-reload
sudo systemctl restart docker

第四步:轻量服务器特有的注意事项(避坑指南)

这里是我作为“过来人”总结的几个关键点,很多新手会在这里翻车:

1. 端口安全组必须开!

这是阿里云轻量服务器最容易忽略的地方。Docker 容器内部开了 80 或 8080 端口,不代表外部能访问。
你必须去阿里云控制台 -> 轻量应用服务器 -> 防火墙 -> 添加规则。

  • 方向:入方向
  • 协议:TCP
  • 端口范围:你容器映射的端口(如 80, 8080, 3306 等)
  • 授权对象:0.0.0.0/0

如果不配这个,你在本地浏览器访问 IP:端口,永远显示连接超时。

2. 内存限制

轻量服务器通常配置较低(如 1核 1G 或 2核 2G)。

  • Docker 本身不占太多内存,但如果你跑多个容器(比如 Nginx + MySQL + Redis + Node.js),1G 内存很容易爆掉导致 OOM(Out of Memory)。
  • 建议: 如果是 1G 内存机器,尽量只跑一个轻量级服务,或者使用 Swap 分区应急。
    # 查看内存
    free -h
    # 创建 2G swap 文件(应急用)
    sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile

3. 数据持久化

轻量服务器的系统盘通常是随实例一起销毁的(除非你买了云盘备份策略)。

  • 原则: 所有数据库、配置文件、用户上传的文件,务必挂载到宿主机目录或使用 Volume。
  • 例如启动 MySQL:
    docker run -d 
      --name mysql-test 
      -v /root/mysql-data:/var/lib/mysql 
      -e MYSQL_ROOT_PASSWORD=mysecret 
      mysql:8.0

    这样即使你重装系统或重置实例,只要保留 /root/mysql-data 的数据盘,数据就不会丢。

4. IPv6 问题

部分新版 Docker 或内核在 IPv6 环境下可能会有网络不通的问题。如果发现容器内无法联网,可以尝试在 daemon.json 中禁用 IPv6:

{
  "ipv6": false
}

第五步:常用运维命令速查

  • 查看正在运行的容器: docker ps
  • 查看日志(调试神器): docker logs -f <容器ID或名称>
  • 进入容器内部: docker exec -it <容器ID> bash
  • 停止容器: docker stop <容器ID>
  • 删除容器: docker rm <容器ID>
  • 删除镜像: docker rmi <镜像ID>
  • 清理无用资源(释放磁盘空间): docker system prune -a (谨慎使用,会删除所有未使用的镜像和卷)

总结

在阿里云轻量服务器上装 Docker,核心就三步:

  1. 装好 Docker CE(别用旧版)。
  2. 配好镜像提速(否则下载慢到怀疑人生)。
  3. 开对防火墙端口(否则网络连不上)。

只要这三点做好了,剩下的就是写 docker-compose.yml 玩起来了。对于个人开发者或小团队项目,这套组合拳足够稳定且高效。