我正在尝试将windows中的一个文件夹连接到一个container文件夹。这是为一个需要读取文件夹中文件的.NET应用程序准备的。在一个普通的docker container中,使用docer-compose,应用程序可以正常工作,但由于这只是我们需要监控的几个不同应用程序中的一个,我们正在尝试让kubernetes参与进来。这也是我们失败的地方。作为一个kubernetes的初学者,我使用komposeiderexe将合成文件转换为kuberetes样式。但是,无论我使用hostPath还是persistentVolumeClaim作为标志,我都不能让事情“开箱即用”。使用hostPath,路径非常不正确,使用persistentVolumeClaim,我得到一个警告,说不支持在主机上安装卷。因此,我尝试自己完成这一部分,但既不使用永久卷也不直接在部署文件中输入挂载数据,我所做的最接近的事情是我可以进入文件夹,并可以更改为其中的子文件夹,但只要我尝试运行任何其他命令,无论是“ls”或“cat”,我得到了“不允许操作”。这是我的Docker合成文件,它按预期工作
version: "3.8"
services:
test-create-hw-file:
container_name: "testcreatehwfile"
image: test-create-hw-file:trygg
network_mode: "host"
volumes:
- /c/temp/testfiles:/app/files
在该文件上运行konvert compose:
x一个一个一个一个x一个一个二个x
在该文件上运行kubectl apply只会出现臭名昭著的错误“Error:守护程序的错误响应:无效模式:/app/files”,这意味着,据我所知,不是“/app/files”错了,而是应该连接的文件夹的格式不正确。这是相当奇怪的C:\temp\c\temp\testfiles
行。在谷歌搜索和阅读了很多之后,我有两种方法来更改它,到/c/temp/testfiles
或/host_mnt/c/temp/testfiles
。两者都以相同的“不允许操作”结束。我正在通过进入Docker桌面中容器上的CLI来检查这一点。
测试中的图像只是一个应用程序,除了等待五分钟不退出,然后才能检查文件夹之外,它现在什么也不做。我以root用户身份登录到shell,在执行“ls -lA”时,我有下面一行用于文件夹:
drwxrwxrwx 1 root root 0 Feb 7 12:04 files
此外,docker-user
对c:\temp\testfiles
文件夹具有完全访问权限。
部分版本数据:
Docker version 20.10.12, build e91ed57
Kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:32:32Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"linux/amd64"}
Kompose version
1.26.1 (a9d05d509)
Host OS: Windows 10, 21H2
//崔格
4条答案
按热度按时间wswtfjt71#
很高兴我最初的评论解决了你的问题。我想以官方回答的形式扩展一下我的想法。
要在Docker Desktop for Windows上使用Kubernetes装载卷,路径为:
不幸的是,没有官方文档,但这里有一个很好的评论与解释,这是与Docker守护程序:
/mnt/wsl实际上是跨发行版挂载tmpfs的挂载点
Docker守护程序将其装载到其/run/desktop/mnt/host/wsl目录中
wfveoks02#
多亏了RadekW,现在问题解决了,路径应该写成
/run/desktop/mnt/host/c/PATH/TO/FILE
,在我的例子中:/run/desktop/mnt/host/c/temp/testfiles
.如果我找到任何关于这方面的文档,我会添加一个源代码。8qgya5xd3#
我面临着同样的问题,它采取了3天。最后我通过重新配置解决如下:
koaltpgm4#
+1 to @RadekW.只是为了清楚起见,这里是更新的
persistent-volume.yaml
,感谢这篇文章为我工作: