1. 环境清理与官方 APT 源配置
切勿使用系统自带的旧版 `apt install docker.io`,官方上游版本包含关键的漏洞修复和最新的 BuildKit 引擎:
# 1. 卸载可能冲突的旧版本包
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove -y $pkg; done
# 2. 安装安全传输依赖与 GPG 密钥
apt-get update && apt-get install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
# 3. 写入官方 apt 存储库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
2. 安装最新 Docker CE 与 Compose v2 插件
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 授予当前普通用户免 sudo 运行权限
usermod -aG docker $USER
# 验证 Docker 与 Compose 版本
docker --version && docker compose version
3. daemon.json 生产级参数优化 (日志防爆盘)
默认配置下,Docker 容器的标准输出日志会无节制膨胀,常年运行极易导致 Netcup 的 NVMe 磁盘爆满宕机。创建 /etc/docker/daemon.json,强制限制日志大小上限并开启热重启特性:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
},
"live-restore": true,
"features": {
"buildkit": true
}
}
systemctl restart docker
4. 核心安全警报:解决 Docker 绕过 UFW 端口暴露漏洞
🚨 重大隐患警报:
Docker 在 Linux 下默认会直接操作底层 iptables NAT 规则链,绕过常规 UFW 防火墙规则。这意味着即使 UFW 配置为【默认拒绝所有入站】,只要容器通过 -p 8080:80 映射了端口,该端口依然会直接向公网暴露。
✅ 生产防护方案 A: 严格绑定 Localhost (127.0.0.1)
在 Compose 文件中将 ports: 写作 127.0.0.1:8080:80,仅允许本机反向代理访问。
✅ 生产防护方案 B: 安装开源 ufw-docker 防火墙守护补丁
wget -O /usr/local/bin/ufw-docker https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker
chmod +x /usr/local/bin/ufw-docker
ufw-docker install
systemctl restart ufw
5. 生产级 Docker Compose 反向代理与自动 HTTPS 样板
借助 Netcup VPS 极速的 NVMe I/O 与充裕内存,运行微服务网关游刃有余。以下是生产就绪的 Docker Compose 样板,使用 Nginx 容器反向代理 Web 应用:
services:
app:
image: nginx:alpine
container_name: web_service
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
networks:
- internal_net
networks:
internal_net:
driver: bridge
6. 可选:部署 Portainer CE 可视化容器管理面板
如果你偏好在 Web 界面查看容器资源消耗、查看实时日志与执行命令行终端,可一键启动 Portainer CE:
docker volume create portainer_data
docker run -d -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
访问 https://<YOUR_SERVER_IP>:9443 即可设置管理员密码并初始化管理。
7. 容器维护与定期清理 (磁盘爆满急救)
频繁构建或拉取镜像会残留大量无用缓存层(Dangling Images)。推荐定期执行以下清理命令,或加入周定时任务:
# 1. 查看 Docker 各项资源占用
docker system df
# 2. 清理所有未运行的容器、未引用的网络及悬空镜像
docker system prune -f
# 3. 深度清理无用镜像与未引用的匿名卷(高危:慎用)
docker system prune -a --volumes -f
8. 常见问题解答 (FAQ)
Q: 为什么我的 VPS 安装 Docker 后,UFW 防火墙没有拦截容器映射的端口?
Docker 默认会在 Linux 底层 iptables 的 NAT 表中直接注入 PREROUTING 规则链,它的执行优先级高于 UFW 所在的 INPUT 链。这意味着容器直接通过 -p 8080:80 映射端口时,外部流量在到达 UFW 过滤前就已经被 Docker 转发给容器了。必须通过绑定 127.0.0.1 或安装 ufw-docker 补丁拦截。
Q: Docker 容器长时间运行后,/var/lib/docker/overlay2 占满磁盘怎么办?
1. 运行 docker system df 检查空间占用分布;2. 运行 docker system prune -a --volumes 清理所有未使用的悬空镜像、退出的容器和匿名卷;3. 最关键的是确保在 /etc/docker/daemon.json 中配置了 max-size: "50m" 日志轮转,因为通常 80% 的磁盘暴满是容器无休止打印的 JSON 日志所致。
Q: 在 Netcup VPS 上使用 Docker Compose 和在本地开发环境有什么区别?
在生产环境中必须注意:1. 严禁使用最新 latest 标签,务必锁定确定的大版本号;2. 必须为关键容器显式声明 restart: unless-stopped 保证宿主机重启后自动恢复;3. 数据库和关键配置严禁暴露公网端口,全部放入同一 Docker 内部私有网络 (bridge) 互联。
Q: Docker 会拖慢 Netcup AMD EPYC 服务器的性能吗?
损耗极低(通常 < 1%)。Docker 采用 Linux 命名空间与控制组(cgroups/namespaces)进行进程级隔离,而非硬件全系统仿真。CPU 和 NVMe 存储读写接近原生性能,配合 Netcup G12 的 PCIe 4.0 NVMe 存储阵列,能为 MySQL/PostgreSQL 容器提供高 IOPS 支持。
Markus S.
资深欧洲云计算架构师 & Linux 系统专家
Markus 专注于欧洲高性价比云基础设施评测与系统性能优化。本站所有教程、跑分基准与免税验证流程,均在个人自费购买的 Netcup 纽伦堡数据中心(AMD EPYC 架构)真实生产节点上完成测试与复现。
📚 推荐阅读:精选 Netcup 架构配置与深度对比指南
基于真实生产环境验证的权威指南,助您省钱选型并顺利玩转德国高性能服务器
Netcup 0% 增值税自动免税指南:非欧盟用户如何免除 19% 德国税
详解非欧盟真实账单地址、系统全自动 0% VAT 减免机制、误扣退税流程及实付净价计算。
2026 Netcup 注册与开户指南:账号开通与人工审核合规流程
规范填写注册信息、理解订单人工审核(Auftrag in Prüfung)机制,合规顺利开通账号。
Netcup vs Hetzner 深度横评:价格、Geekbench 跑分与网络延迟对比
对比独享 CPU 与共享 CPU 的性能曲线、流量计费策略以及国际网络线路表现。
Netcup 自定义 ISO 安装 Windows 及任意 Linux 完整实操教程
借助 SCP 控制台与 VNC 远程,挂载并安装带有 VirtIO 驱动的个性化镜像。