codekitchen/dinghy-http-proxyDinghy HTTP Proxy 是 Dinghy 使用的HTTP代理和DNS服务器,基于 jwilder 的 nginx-proxy 项目修改,更适用于本地开发环境。同时集成DNS解析器,默认将所有 *.docker 域名解析到Docker虚拟机,支持自定义配置。
*.docker 域名,可通过环境变量自定义顶级域名<service>.<project>.<tld> 格式主机名适用于本地Docker开发环境,特别是需要同时运行多个项目、通过自定义域名访问容器、需要SSL加密或跨域资源共享的场景。简化本地开发中Docker容器的网络访问配置,无需手动修改hosts文件或端口映射。
代理默认使用容器暴露的第一个端口作为HTTP代理目标端口,可通过设置容器的 VIRTUAL_PORT 环境变量指定目标端口。
代理会基于Docker Compose为容器添加的标签自动生成主机名,格式为 <service>.<project>.<tld>。例如,默认 *.docker 顶级域名下,"myapp"项目中的"web"服务可通过 [***] 访问。
通过为容器设置 VIRTUAL_HOST 环境变量(可通过 docker run -e 或docker-compose的 environment 配置)指定主机名,覆盖自动生成的主机名。
支持多个虚拟主机,用逗号分隔,例如 VIRTUAL_HOST=foo.bar.com,baz.bar.com,bar.com,每个主机配置相同。还可指定端口:foo.bar.com,baz.bar.com:3000,未指定端口的主机使用默认端口。
支持前缀/后缀通配符(如 *.bar.com 或 foo.bar.*)及正则表达式(以 ~ 开头)。例如 ~^foo\.bar\..*\.xip\.io 可匹配 foo.bar.127.0.0.1.xip.io 等域名(需配合xip.io等 wildcard DNS服务)。更多说明见 nginx server_names文档。
为容器设置 CORS_ENABLED=true 环境变量,允许代理接受跨域请求。
在主机名前添加 . 前缀,使容器同时支持所有子域名访问。例如 VIRTUAL_HOST=.myrailsapp.docker 可使应用同时通过 *.myrailsapp.docker 访问。Docker Compose自动生成的主机名默认支持此功能。
将SSL证书和私钥放置在 HOME/.dinghy/certs 目录,文件名需与虚拟主机名对应,扩展名为 .crt(证书)和 .key(私钥)。例如 VIRTUAL_HOST=foo.bar.com.docker 需对应 foo.bar.com.docker.crt 和 foo.bar.com.docker.key。
HTTPS_METHOD=redirect(默认):80端口重定向到443HTTPS_METHOD=noredirect:同时支持80和443,不重定向HTTPS_METHOD=nohttp:仅支持443,禁用80端口使用 openssl 生成自签名证书:
bashopenssl req -x509 -newkey rsa:2048 -keyout foo.bar.com.docker.key \ -out foo.bar.com.docker.crt -days 365 -nodes \ -subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=foo.bar.com.docker" \ -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:foo.bar.com.docker")) \ -reqexts SAN -extensions SAN
生成后需安装到系统信任证书库以避免浏览器警告。
支持独立运行,通过环境变量自定义配置:
DOMAIN_TLD:默认 docker,DNS服务器解析的顶级域名DNS_IP:默认 127.0.0.1,DNS解析目标IP获取Docker VM IP:
docker-machine ip <machine_name>127.0.0.1启动代理容器:
bashdocker run -d --restart=always \ -v /var/run/docker.sock:/tmp/docker.sock:ro \ -v ~/.dinghy/certs:/etc/nginx/certs \ -p 80:80 -p 443:443 -p ***:***/udp \ -e DNS_IP=<vm_ip> -e CONTAINER_NAME=http-proxy \ --name http-proxy \ codekitchen/dinghy-http-proxy
/etc/resolver/docker 文件(需先创建 /etc/resolver 目录):nameserver <vm_ip> port ***
直接在Linux主机运行Docker时:
bashdocker run -d --restart=always \ -v /var/run/docker.sock:/tmp/docker.sock:ro \ -v ~/.dinghy/certs:/etc/nginx/certs \ -p 80:80 -p 443:443 -p ***:***/udp \ -e CONTAINER_NAME=http-proxy \ --name http-proxy \ codekitchen/dinghy-http-proxy
DNS配置需根据Linux发行版调整,可参考 Dory 项目。
Docker for Windows使用 127.0.0.1 作为DNS IP:
Powershell命令:
powershelldocker run -d --restart=always ` -v /var/run/docker.sock:/tmp/docker.sock:ro ` -p 80:80 -p 443:443 -p ***:***/udp ` -e CONTAINER_NAME=http-proxy ` -e DNS_IP=127.0.0.1 ` --name http-proxy ` codekitchen/dinghy-http-proxy
docker-compose配置:
yamlversion: '2' services: http-proxy: container_name: http-proxy image: codekitchen/dinghy-http-proxy environment: - DNS_IP=127.0.0.1 - CONTAINER_NAME=http-proxy ports: - "80:80" - "443:443" - "***:***/udp" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro
需手动添加主机到 C:\Windows\System32\drivers\etc\hosts,可使用Powershell脚本辅助管理(如 Carbon 或 相关Gist)。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务