如何通过Docker.Dotnet客户端在DockerHub上使用私有仓库进行身份验证?

我目前正在.NET Standard中编写微服务,该服务将编写Dockerfile,构建与该Dockerfile关联的Docker映像(这会隐式地产生拉取映像),并将该映像推送到私有Docker注册表中。这些Docker操作都是使用MSFT维护的Docker.Dotnet库执行的。我相信这主要只是对Docker Remote API调用的包装。该微服务的执行上下文位于AWS托管的K8s群集中,或者位于内部裸机上,具体取决于部署。

以前,我们的Docker注册表只是内部由Artifactory托管的私有注册表,但是我们正在迁移到私有DockerHub注册表/存储库/。这种迁移带来了一些身份验证问题。

我们使用AuthConfig对所有拉入和推入操作进行身份验证,该AuthConfig由与注册表关联的帐户的用户名和密码组成。 AuthConfig被添加到Parameters对象,然后传递给调用:

imageBuildParameters.AuthConfigs = new Dictionary<string,AuthConfig>() { { DockerEnvVariables.DockerRegistry,authConfig } };

...

using (var responseStream = _dockerClient.Images.BuildImageFromDockerfileAsync(tarball,imageBuildParameters).Getawaiter().GetResult())

或者(奇怪的是,对我来说)既传递了参数又传递给了调用:

ImagePushParameters imagePushParameters = new ImagePushParameters() { ImageID = image.Id,RegistryAuth = authConfig,Tag = "latest" };
_dockerClient.Images.PushImageAsync(RepoImage(image.Id),imagePushParameters,authConfig,this).Getawaiter().GetResult();

我目前为DockerHub尝试过的各种Docker注册管理中心都出现身份验证错误,因此(我编辑了组织/命名空间和图像: {“消息”:“拒绝注册表-1.docker.io//的拉访问,存储库不存在或可能需要'docker登录':拒绝:请求的资源访问被拒绝”},“错误”:“拉拒绝对Registry-1.docker.io//的访问,存储库不存在或可能需要'docker login':拒绝:请求的对资源的访问被拒绝”

以下是我尝试过的DockerHub URL列表,全部带有以上错误或不同的“无效参考格式”错误:

  • Hub.docker.io
  • Hub.docker.io/v1 /
  • Docker.io
  • Docker.io/v1 /
  • Index.docker.io
  • Index.docker.io/v1 /
  • Registry.hub.docker.com
  • registry-1.docker.io

奇怪的是,如果我在Windows系统上本地运行,则加粗的URL实际上是有效的。但是,它们在部署到集群时都失败了(与Docker套接字/ npipe进行交互的不同方法?)。

有人知道我需要设置正确的URL来正确认证和与DockerHub进行交互吗?还是如果我当前对Docker.Dotnet库的实现和使用在某种程度上不正确?同样,它与Artifactory上的私有Docker注册表以及在我的本地Windows系统上运行的DockerHub都可以正常工作。任何帮助将不胜感激。我可以提供更多必要的信息,无论是代码还是配置。

x357904377 回答:如何通过Docker.Dotnet客户端在DockerHub上使用私有仓库进行身份验证?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2637186.html

大家都在问