
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Dinghy HTTP Proxy 是 https://github.com/codekitchen/dinghy 使用的HTTP代理和DNS服务器,基于 jwilder 的 https://github.com/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"服务可通过 http://web.myapp.docker/ 访问。
通过为容器设置 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服务)。更多说明见 http://nginx.org/en/docs/http/server_names.html%E3%80%82
为容器设置 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。
SSL工作原理
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解析目标IPOS X系统部署
获取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 19322:19322/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 19322
Linux系统部署
直接在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 19322:19322/udp \ -e CONTAINER_NAME=http-proxy \ --name http-proxy \ codekitchen/dinghy-http-proxy
DNS配置需根据Linux发行版调整,可参考 https://github.com/***/dory 项目。
Windows系统部署
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 19322:19322/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" - "19322:19322/udp" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro
需手动添加主机到 C:\Windows\System32\drivers\etc\hosts,可使用Powershell脚本辅助管理(如 Carbon 或 https://gist.github.com/markembling/***%EF%BC%89%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务