Docker创建没有所有者的目录

我不知道Docker的文件系统权限有什么问题。

长话短说,我使用Jenkins进行一些测试自动化步骤,这些步骤在Windows上使用Docker容器,例如:

Jenkins主机(Linux)-> Docker容器(在Windows代理上)

有关更多详细信息,我在Docker中使用Windows样式的容器。

以下是版本:

  • Windows 10 v1909
  • Docker桌面:2.1.0.5稳定(引擎:19.03.5)
  • 詹金斯2.190.3稳定

这是用于创建映像的Dockerfile的对应行:

FROM mcr.microsoft.com/windows/servercore/insider:10.0.18362.113-amd64

图像已创建,没有任何错误。

我在Jenkins Pipeline脚本中将Win Agent的目录作为卷装入到容器(将“工作”目录映射到了容器)。

卷映射为(host_dir:incontainer_dir):

-v c:\Users\user\work:c:\work

我简化了脚本以确定问题所在,因此管道脚本中有一个复制命令:

stages {
  stage('Win') {
    steps {
      bat "cd c:\work  &&  cp -r Data Copy"
    }
  }
}

容器成功启动,并且按预期方式复制了名为Copy的Data文件夹。 (此步骤由启动的Docker容器完成。)

但是我从容器中收到文件许可权错误。

经过一番研究,我发现复制目录(由容器直接在容器外部创建,但位于代理的文件系统上)没有所有者。

在本地Windows代理上执行dir命令的结果:

C:\Users\user\work>dir /N /Q
 Volume in drive C has no label.
 Volume Serial Number is 2EF3-077C

 Directory of C:\Users\user\work

Date           Time     Type   Size    Owner                   Name
2020. 01. 07.  15:55    <DIR>          DESKTOP-6PSFAAK\user    .
2020. 01. 07.  15:55    <DIR>          NT AUTHORITY\SYSTEM     ..
2020. 01. 07.  15:55    <DIR>          ...                     Copy
2020. 01. 06.  13:54    <DIR>          DESKTOP-6PSFAAK\user    Data
               2 File(s)          1 200 bytes
               5 Dir(s)  347 321 208 832 bytes free

正如您所看到的,复制目录的所有者被称为“ ...”三个点。当我尝试删除此目录时,系统会要求管理员特权。

我认为这可能是文件系统权限错误的原因。

有什么问题吗?

zdh064105 回答:Docker创建没有所有者的目录

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

大家都在问