You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Docker Compose配置隔离网络,实现air-gapped环境测试?

构建离线(Air-Gapped)Docker环境的跨平台方案

不需要额外Docker驱动,直接用Docker Compose自带的网络配置就能实现「容器仅能访问compose定义的服务、无法连接互联网」的需求,且方案完全跨平台(Linux、Windows Docker Desktop、macOS Docker Desktop通用)。

核心实现思路

通过定义内部专属网络,让所有服务仅加入该网络。Docker的internal: true网络属性会限制该网络内的容器只能互相通信,无法主动访问外部网络(包括互联网),同时外部网络也无法访问容器(无需额外防火墙规则)。

Docker Compose 配置示例

version: '3.8'

# 定义离线专用内部网络
networks:
  offline-backup-test:
    internal: true  # 核心配置:禁用外网访问,仅允许网络内服务互通

services:
  # PostgreSQL 服务:自动恢复备份
  postgres:
    image: postgres:15
    environment:
      POSTGRES_USER: prod_user
      POSTGRES_PASSWORD: prod_pass
      POSTGRES_DB: prod_db
    volumes:
      # 挂载本地恢复用的备份文件(提前放到离线环境)
      - ./prod_backup.sql:/docker-entrypoint-initdb.d/restore.sql
      # 可选:持久化数据库数据到本地
      - ./postgres_data:/var/lib/postgresql/data
    networks:
      - offline-backup-test

  # 应用服务:连接恢复后的数据库
  app:
    # 提前在有网环境构建/拉取镜像,离线环境导入
    image: your-prod-app:latest
    environment:
      DB_HOST: postgres
      DB_PORT: 5432
      DB_USER: prod_user
      DB_PASSWORD: prod_pass
      DB_NAME: prod_db
      # 按需添加应用的离线配置,比如禁用外部通知功能
      DISABLE_EXTERNAL_NOTIFICATIONS: "true"
    depends_on:
      - postgres
    networks:
      - offline-backup-test

离线环境准备步骤

  1. 镜像离线导入:在有网络环境拉取所需镜像,导出后拷贝到离线机器:
    # 拉取镜像
    docker pull postgres:15
    docker pull your-prod-app:latest
    # 导出为tar包
    docker save postgres:15 -o postgres.tar
    docker save your-prod-app:latest -o app.tar
    # 离线机器导入
    docker load -i postgres.tar
    docker load -i app.tar
    
  2. 备份文件与应用配置:将生产数据库备份文件、应用离线配置文件提前拷贝到离线机器的compose目录下。

网络连通性验证

启动服务后,进入容器验证网络限制:

# 进入应用容器
docker exec -it <app-container-name> /bin/bash
# 测试访问互联网(应失败)
ping google.com
# 测试访问PostgreSQL服务(应成功)
ping postgres

跨平台兼容性说明

此方案依赖Docker Compose的标准网络配置,internal: true属性在Linux、Windows Docker Desktop、macOS Docker Desktop上均得到原生支持,无需针对不同系统做额外调整。

额外注意事项

  • 如果应用存在依赖外部资源的逻辑(如第三方API、邮件通知),需在配置中明确禁用该功能,避免应用因无法访问外网而报错。
  • 无需配置端口映射(ports字段),防止外部网络意外访问容器,保持环境的离线隔离性。

内容的提问来源于stack exchange,提问作者tftd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 00:22:40