Docker白名单代理(tecnativa/whitelist)是一个基于socat的网络代理工具,用于实现网络连接的白名单控制。它允许将传入连接重定向到指定目标,同时限制容器的网络访问范围,解决Docker内部网络中完全隔离或完全开放的局限性。
该镜像主要用于解决Docker网络隔离中的灵活性问题,具体场景包括:
核心价值在于提供了一种中间状态的网络隔离方案,既避免了完全隔离导致的功能限制,又防止了完全开放带来的安全风险。
通过以下环境变量配置代理行为:
TARGETMODEtcpudp可启用UDP代理模式MAX_CONNECTIONS100每个端口和连接会生成一个子进程,过高的数值可能导致主机无响应。典型Linux系统可处理约32768个进程,若需大量连接,需调整主机系统参数(参考:Linux最大PID限制),并按通过该代理的端口数量分摊此数值。
NAMESERVERS208.67.222.222 8.8.8.8 208.67.220.220 8.8.4.4(OpenDNS和Google DNS服务器)PORT80 443PRE_RESOLVE01时,使用指定的NAMESERVERS预先解析TARGET主机名,特别适用于通过网络别名白名单外部API的场景UDP_ANSWERS11表示进程等待服务器响应后才终止子进程(此时连接计入连接限制);设置为0则不等待响应,防止子进程无限等待(推荐用于连接syslog服务器如graylog的场景)VERBOSE01时记录所有连接日志以下示例展示如何在staging环境中使用该镜像解决应用无法访问外部字体服务的问题。
生产环境中的coolapp应用需要访问fonts.googleapis.com和fonts.gstatic.com加载字体,但在staging环境中,为避免邮件发送等外部网络行为,应用被部署在内部网络(internal: true),导致无法加载字体。
通过tecnativa/whitelist为字体服务创建代理,允许应用访问特定域名,同时保持其他网络隔离。
yaml# Staging部署配置 version: "2.0" services: # 代理fonts.googleapis.com fonts_googleapis_proxy: image: tecnativa/whitelist environment: TARGET: fonts.googleapis.com # 目标主机 PRE_RESOLVE: 1 # 启用预解析,避免解析到本地 networks: default: # 内部网络,供应用访问 aliases: - fonts.googleapis.com # 网络别名,使应用认为此代理即目标主机 public: # 公共网络,提供外部访问能力 # 代理fonts.gstatic.com fonts_gstatic_proxy: image: tecnativa/whitelist networks: default: aliases: - fonts.gstatic.com public: environment: TARGET: fonts.gstatic.com PRE_RESOLVE: 1 # 入口代理(如traefik) proxy: image: traefik networks: default: public: ports: - "8080:8080" # 暴露访问端口 volumes: - /etc/traefik/traefik.toml # traefik配置文件 # 应用服务 app: image: Tecnativa/coolapp environment: DB_HOST: db # 数据库连接 depends_on: - db # 数据库服务 db: image: postgres:alpine networks: default: internal: true # 内部网络,默认隔离外部访问 except通过代理 public: # 公共网络,用于代理对外连接
aliases在内部网络中模拟目标域名PRE_RESOLVE: 1确保代理正确解析外部域名,而非内部网络中的本地地址通过此配置,应用可正常加载字体,同时保持其他外部网络隔离,解决了网络隔离与功能可用性的矛盾。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速