在 Ubuntu 系统(推荐 22.04 LTS 或 24.04 LTS)上为轻量服务器(如 1GB 内存、单核 CPU 的云服务器)部署 Docker 环境,需兼顾简洁性、安全性与资源效率。以下是经过验证的生产就绪(Production-Ready Lite)部署步骤:
✅ 一、前置准备(建议执行)
# 1. 更新系统并安装基础工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget gnupg2 software-properties-common ca-certificates
# 2. (可选但强烈推荐)配置非 root 用户并启用 sudo(避免直接用 root)
# 若当前是 root,建议创建普通用户(例如 dockeradmin):
# adduser dockeradmin && usermod -aG sudo dockeradmin
# 然后切换:su - dockeradmin
✅ 二、安装 Docker(官方推荐方式 —— 使用 APT 仓库)
⚠️ 不推荐
curl https://get.docker.com | sh(缺乏校验、绕过包管理器、不利于审计/升级)
# 1. 添加 Docker 官方 GPG 密钥(安全验证)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 2. 添加稳定版仓库(适配当前 Ubuntu 版本)
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
# 3. 更新包索引并安装 Docker 引擎(轻量选择:仅安装核心组件)
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# ✅ 验证安装
sudo docker --version # e.g., Docker version 26.x.x
sudo docker info | grep -i "docker root dir|storage driver"
✅ 三、轻量优化配置(关键!节省内存/CPU)
🔹 1. 配置 containerd 使用 systemd cgroup 驱动(推荐,兼容性好且轻量)
# 创建配置目录(若不存在)
sudo mkdir -p /etc/containerd
# 生成默认配置(注意:此命令会覆盖现有配置,请确认)
sudo containerd config default | sudo tee /etc/containerd/config.toml
# 修改 cgroup 驱动为 systemd(Ubuntu 默认已设,但显式确认更稳妥)
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# 重启 containerd
sudo systemctl restart containerd
🔹 2. 限制 Docker daemon 资源(防止 OOM)
编辑 /etc/docker/daemon.json(首次创建):
{
"log-driver": "journald",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 65536,
"Soft": 65536
}
},
"oom-score-adjust": -500
}
✅ 说明:
journald日志驱动比json-file更省内存;- 限制日志大小防磁盘占满;
oom-score-adjust降低 Docker 被系统 OOM killer 杀掉的概率。
sudo systemctl daemon-reload
sudo systemctl restart docker
🔹 3. (可选)禁用不需要的组件(进一步减重)
# 禁用 dockerd 的内置 registry(除非你自建镜像仓库)
# → 默认不启用,无需操作
# 卸载 docker-desktop(Ubuntu Server 不含此包,忽略)
# 如需极致精简,可卸载 buildx/compose-plugin(若不用构建/编排):
# sudo apt remove -y docker-buildx-plugin docker-compose-plugin
✅ 四、权限与安全加固(必须!)
# 1. 将当前用户加入 docker 组(避免每次加 sudo)
sudo usermod -aG docker $USER
# ⚠️ 注意:需重新登录或运行 `newgrp docker` 生效
# 2. 验证无 sudo 运行(新终端中测试):
docker run --rm hello-world
# 3. (重要)禁止 docker.sock 暴露到容器(默认安全,但检查)
# 确保未运行类似 `docker run -v /var/run/docker.sock:/var/run/docker.sock ...` 的危险容器
# 4. (可选)启用 Docker 内置内容信任(镜像签名验证)
echo '{ "content-trust": true }' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
✅ 五、轻量服务示例(验证环境可用)
# 启动一个极小的 Nginx(Alpine 版本,~7MB 镜像)
docker run -d
--name nginx-lite
-p 8080:80
-m 64m --memory-swap=64m
--cpus 0.5
--restart unless-stopped
nginx:alpine
# 查看资源占用(确认轻量)
docker stats nginx-lite --no-stream | head -2
# 访问 http://your-server-ip:8080 应显示欢迎页
✅ 六、日常维护建议(轻量服务器友好)
| 任务 | 命令 |
|---|---|
| 清理无用镜像/容器/卷 | docker system prune -f --volumes |
| 查看磁盘占用 | docker system df -v |
| 查看运行容器资源 | docker stats --no-stream |
日志查看(替代 docker logs) |
journalctl -u docker.service -n 50 --no-pager |
💡 提示:可在 crontab 中每周自动清理(谨慎评估业务):
# 每周日凌晨2点清理(添加到 root crontab:`sudo crontab -e`) 0 2 * * 0 docker system prune -f --volumes
❌ 常见误区规避
- ❌ 不要用
snap install docker(Ubuntu Snap 版 Docker 在 Server 环境存在兼容性问题,且更新滞后) - ❌ 不要关闭
ufw后直接开放2375(Docker daemon TCP 端口),如需远程管理请用 SSH 隧道或 TLS 认证 - ❌ 不要在生产环境使用
--privileged或挂载/proc//sys到容器(破坏隔离性)
✅ 完成!
你现在拥有了一个安全、可控、资源友好的 Docker 环境,适合运行 Nginx、Redis、PostgreSQL(轻量配置)、Node.js API 等常见服务。
需要我为你提供:
- ✨ 一键部署脚本(含错误检查 & 自动化)?
- 🐳 Nginx + Let’s Encrypt 反向X_X模板?
- 📦 Docker Compose 多服务轻量编排示例(如 WordPress + MariaDB)?
- 🔐 TLS 加密 + Docker Socket 安全访问方案?
欢迎随时告诉我你的具体场景 👇
云知识