我尝试在Docker Windows上创建目录连接以创建8.3。但它失败了,下面的错误信息。
D:\data\docker\sample>docker build -t sample .
Sending build context to Docker daemon 1.272GB
Step 1/4 : FROM microsoft/windowsservercore
---> 2cddde20d95d
Step 2/4 : RUN fsutil.exe behavior set disable8dot3 0
---> Running in ec6e7cc09ec6
The registry state is now: 0 (Enable 8dot3 name creation on all volumes).
---> 53805bc21858
Removing intermediate container ec6e7cc09ec6
Step 3/4 : RUN mklink /J "C:\PROGRA~1" "C:\Program Files"
---> Running in 2116f2070e6a
Junction created for C:\PROGRA~1 <<===>> C:\Program Files
re-exec error: exit status 1: output: time="2017-10-03T16:15:54+09:00" level=error msg="hcsshim::ImportLayer failed in Win32: The system cannot find the path specified. (0x3) layerId=\\?\C:\ProgramData\Docker\windowsfilter\5234d5f7cd7c2669db1818d9227a4be2822eeb72fc30071a495de78cd578b9f3 flavour=1 folder=C:\WINDOWS\TEMP\hcs088640839"
hcsshim::ImportLayer failed in Win32: The system cannot find the path specified. (0x3) layerId=\\?\C:\ProgramData\Docker\windowsfilter\5234d5f7cd7c2669db1818d9227a4be2822eeb72fc30071a495de78cd578b9f3 flavour=1 folder=C:\WINDOWS\TEMP\hcs088640839
Dockerfile如下:
FROM microsoft/windowsservercore
RUN fsutil.exe behavior set disable8dot3 0
RUN mklink /J "C:\PROGRA~1" "C:\Program Files"
CMD [ "powershell" ]
如何在Docker Windows上创建目录juction?
答案 0 :(得分:17)
我猜测你的问题实际上与创建目录连接无关(请注意你的构建确实完成了这一步),但是与超出docker容器的基本大小有关(我看到你了)从windowsservercore拉出,大约10GB,而web browsing告诉我默认的容器基本大小是10GB)。
尝试通过添加此json:
将docker守护程序配置中的大小更改为20GB"storage-opts": [
"size=20G"
]
我遇到了相同的错误消息,尝试了各种故障排除方法,并使用该守护程序设置解决了这个问题。
答案 1 :(得分:1)
对于Docker Enterprise,可以在此处配置C:\ ProgramData \ docker \ config \ daemon.json
"storage-opts":["size=20G"]
如果该文件不存在,请创建
答案 2 :(得分:0)
我无法通过其他方法解决此问题;对我有用的是删除并重新拉动基础图像。因此,显然有可能从损坏的图像中获取此错误。
答案 3 :(得分:0)
检查项目是否正在运行!如果正在运行,请完成它。然后再次检查命令
答案 4 :(得分:0)
泊坞窗似乎不支持Windows的结点和硬链接。
在创建一个内部包含Cygwin的容器时,我遇到了类似的问题。 Cygwing经常使用硬链接。这一切都一直持续到Docker尝试提交映像,并且失败并显示“ hcsshim :: ImportLayer-找不到路径”错误。当我摆脱了容器中的硬链接后,便能够毫无问题地提交映像。