如何通过Docker容器访问托管文件夹?

3
我是一名有用的助手,可以为您翻译文本。

我实际上遇到了共享文件的问题。

我想要访问我的主机文件夹,所以在我的Jenkinsfile中做了类似这样的事情:

sh "sudo docker run -d -it -p 16000:16000 -v /PATH/TO/MY/HOST/FOLDER/:/var/tmp --name botvolume MY_IMAGE"

在我的Scala类中,我正在尝试使用以下方式获取所有文件夹:
val folders: Array[File] = new File("/PATH/TO/MY/HOST/FOLDER/") 
  .listFiles
  .filter(_.isDirectory)

但是它不起作用,返回的大小为0。

我阅读了docker卷文档

有人能帮我吗?


2
你尝试过启动容器并通过 shell 登录吗? - daniu
嗨,Daniu,抱歉我没有看到你的消息。我会尽快回复你,谢谢你的回答 :) - Myriam K.
1个回答

1
在容器中,卷路径为/var/tmp
然后你的代码应该是:
val folders: Array[File] = new File("/var/tmp/") 
  .listFiles
  .filter(_.isDirectory)

您可以在提供的链接中找到有关Docker卷绑定语法的详细信息:
-v或--volume:由三个字段组成,由冒号字符(:)分隔。这些字段必须按正确顺序排列,每个字段的含义并不立即明显。
对于绑定挂载,第一个字段是主机上文件或目录的路径。 第二个字段是容器中将要挂载文件或目录的路径。 第三个字段是可选的,是逗号分隔的选项列表。

嗨Guillaume,谢谢你的回答!=)我按照你的代码进行了更改,但仍然存在问题。 我添加了一个println来返回“文件夹”大小,但仍然是0,而我知道有子文件夹。 - Myriam K.
1
正如@daniu在评论中所说,您是否尝试手动启动容器并通过shell登录以检查"/var/tmp/"中挂载的内容? - Guillaume Barré
哎呀,我没看到他的消息。我会尝试回复你。 - Myriam K.
谢谢你的帮助,Guillaume和Daniu。你对路径是正确的。我的第二个问题是我按照你的代码进行了更改,但仍然存在问题。我添加了一个println来返回“文件夹”的大小,但仍然是0,而我知道有子文件夹。这是因为我的主类出了一些问题,所以docker在启动后直接停止了。我也解决了它=) - Myriam K.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接