容器化运维

Netcup VPS 部署 Docker 与 Docker Compose 生产实战指南

在 Netcup 高性价比 NVMe VPS 上运行容器化集群的标准指南。涵盖官方源依赖安装、自动日志回滚、守护进程平滑重启与极其关键的 UFW 端口直接穿透安全防范。

M
Markus S. (资深欧洲系统架构师)
真实环境验证: 2026年9月
⏱️ 阅读约 12 分钟

1. 环境清理与官方 APT 源配置

切勿使用系统自带的旧版 `apt install docker.io`,官方上游版本包含关键的漏洞修复和最新的 BuildKit 引擎:

Adding official Docker GPG key & repo

# 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,强制限制日志大小上限并开启热重启特性:

/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 应用:

docker-compose.yml

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 支持。

MS
内容作者与测试工程师10+ 年欧洲 IDC 与虚拟化架构实战经验

Markus S.

资深欧洲云计算架构师 & Linux 系统专家

Markus 专注于欧洲高性价比云基础设施评测与系统性能优化。本站所有教程、跑分基准与免税验证流程,均在个人自费购买的 Netcup 纽伦堡数据中心(AMD EPYC 架构)真实生产节点上完成测试与复现。

🛡️100% 独立客观评测(自费硬件,无赞助干预)
真实硬件实测(AMD EPYC 9645 宿主机实机压测)
🔄每日自动验证(脚本定时核验优惠券可用性)
关于本站编辑独立性原则: Netcup.Discount 保持严格的编辑独立性。即使部分链接可能产生推荐佣金,也绝不影响评测得分、性能基准或购买建议。所有优惠券均免费向全球开发者开放使用。
⚡ 实时自动同步券池

💰 Netcup 官方验证优惠码与折扣凭证

本站持续维护经过验证的 Netcup 优惠券代码库,支持自动化状态同步。最高可享 30% 费率优惠或首期免月租福利。

浏览所有优惠码 →