生产环境项目问题记录系列(二):Docker打包镜像Nuget包因权限问题还原失败

摘要:
由于Nuget权限验证问题,Docker遇到了图像打包失败的问题。该公司的Nuget包由tfs管理,tfs具有权限验证。因此,Nuget还原失败。配置文件如下:使用此nuget配置在Docker中还原时遇到的第一个错误如下:”Unabletoloadtheserviceindexforsource。。。“.OK显然意味着无法访问nuget地址。我突然想到这可能是权限问题,因此配置被修改如下:˂?

docker打包镜像遇到一个因为nuget权限验证问题导致镜像打包失败的问题,公司Nuget包用的是tfs管理的,tfs有权限验证,结果导致nuget还原失败,原有的NuGet.config文件如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <bindingRedirects>
    <add key="skip" value="False" />
  </bindingRedirects>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="CompanyNuGet" value="*****" />
  </packageSources>
</configuration>

使用这个nuget配置在docker中还原遇到的第一个报错如下: ”Unable to load the service index for source ...”,OK很明显是说无法访问nuget地址,突然想到可能是权限问题,所以修改配置如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <bindingRedirects>
    <add key="skip" value="False" />
  </bindingRedirects>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="CompanyNuGet" value="..." />
  </packageSources>
  <packageSourceCredentials>
    <CompanyNuGet>
      <add key="Username" value="NugetReader" />
      <add key="ClearTextPassword" value="i'm a secret!" />
    </CompanyNuGet>
  </packageSourceCredentials>
</configuration>

然后又报了第二个错:"/home/pi/dotnet/sdk/2.2.300/NuGet.targets(121,5): error :   GSSAPI operation failed with error - An invalid status code was supplied (SPNEGO cannot find mechanisms to negotiate)."

看样子好像是验证失败,无奈网上找办法,找了半天找到了解决方案,首先我们需要在tfs中创建一个私人的Token来当做密码:

生产环境项目问题记录系列(二):Docker打包镜像Nuget包因权限问题还原失败第1张

 生产环境项目问题记录系列(二):Docker打包镜像Nuget包因权限问题还原失败第2张

然后将创建的Token当做密码在NuGet中配置,还要再加一个重要的配置,表示使用基础验证:

<add key="ValidAuthenticationTypes" value="basic" />

最终的NuGet配置如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <bindingRedirects>
    <add key="skip" value="False" />
  </bindingRedirects>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="private-nuget" value="nuget url" />
  </packageSources>
  <packageSourceCredentials>
    <private-nuget>
      <add key="Username" value="NugetReader" />
      <add key="ClearTextPassword" value="Token" />
      <add key="ValidAuthenticationTypes" value="basic" />
    </private-nuget>
  </packageSourceCredentials>
</configuration>

然后镜像打包成功!

免责声明:文章转载自《生产环境项目问题记录系列(二):Docker打包镜像Nuget包因权限问题还原失败》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇强大的strace命令用法详解编译Xposed下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

容器网络(一)docker容器网络驱动

一、Linux网桥和veth pair 1、Linux网桥,虚拟的交换机,工作在数据链路层,通过学习到MAC地址,将数据包转发到网桥的不同端口上。 2、Veth pair,可以理解为一根虚拟的网线,创建veth pair后,会以两张虚拟网卡的形式成对出现,在其中一个网卡发出的数据包,会直接出现在与它对应的另一张网卡上。 二、三种docker网络驱动 Doc...

Docker-ce运用一:创建虚拟机

1、从远程仓库查看所需镜像 [root@localhost docker]# docker search centos8 NAME                                 DESCRIPTION                                     STARS               OFFICIAL     ...

docker中 WSL 配置 修改

Resources The Resources tab allows you to configure CPU, memory, disk, proxies, network, and other resources. Different settings are available for configuration depending on whet...

Docker学习笔记之保存和共享镜像

0x00 概述  让 Docker 引以为傲的是它能够实现相比于其他虚拟化软件更快的环境迁移和部署,在这件事情上,轻量级的容器和镜像结构的设计无疑发挥了巨大的作用。通过将容器打包成镜像,再利用体积远小于其他虚拟化软件的 Docker 镜像,我们可以更快的将它们复制到其他的机器上。在这一节中,我们就专门来谈谈如何进行这样的迁移。 0x01 提交容器更改 之前...

浅谈虚拟机、Docker和Hyper技术

操作系统 我们知道: 完整的操作系统=内核+apps 内核负责管理底层硬件资源,包括CPU、内存、磁盘等等,并向上为apps提供系统调用接口,上层apps应用必须通过系统调用方式使用硬件资源,通常并不能直接访问资源。apps就是用户直接接触的应用,比如命令行工具、图形界面工具等(linux的图形界面也是作为可选应用之一,而不像windows是集成到内核中...

修改docker 容器的存储地址 &amp;amp; docker &amp;amp; container &amp;amp; wsl &amp;amp; win10

HowTo: Change Docker containers storage location with WSL2 on Windows 10 Once I started playing with Docker on Windows it quickly turned out that latest version heavily rely on WS...