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

使用TestContainers启动.NET 8 Web API容器时遇连接拒绝错误求助

问题原因

你指定的Docker镜像名称带有localhost/testcontainers前缀,Docker会将这个前缀解析为本地私有仓库地址,尝试从http://localhost/v2/拉取镜像。但你并未搭建本地Docker私有仓库,导致连接被拒绝,触发了这个InternalServerError异常。

解决方法

方案一:无需私有仓库,直接使用本地镜像

去掉镜像名称中的localhost/testcontainers仓库前缀,让Docker直接使用本地构建的镜像:

private readonly DockerImage image = 
    new DockerImage("MyWebApi", DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString());

或者通过三段式参数,将仓库名留空:

private readonly DockerImage image = 
    new DockerImage("", "MyWebApi", DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString());

注意:使用前确保已通过docker build -t MyWebApi:<标签> .命令将Web API镜像构建到本地Docker环境中。

方案二:搭建本地私有仓库(如需)

如果确实需要使用本地私有仓库,按以下步骤操作:

  1. 启动本地Docker仓库容器:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
  1. 配置Docker允许本地仓库的HTTP访问(默认Docker要求私有仓库使用HTTPS,本地仓库默认是HTTP):
    • Windows/macOS:打开Docker Desktop设置,在Docker Engine中添加"insecure-registries": ["localhost:5000"],保存后重启Docker。
    • Linux:编辑/etc/docker/daemon.json文件,添加上述配置,然后执行systemctl restart docker重启Docker服务。
  2. 修改TestContainers的镜像配置,使用带端口的本地仓库地址:
private readonly DockerImage image = 
    new DockerImage("localhost:5000", "MyWebApi", DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString());
  1. 构建镜像并推送到本地仓库:
docker build -t localhost:5000/MyWebApi:<标签> .
docker push localhost:5000/MyWebApi:<标签>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:50:58