首页 > 解决方案 > 如何通过 docker 容器访问文件夹主机?

问题描述

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

我想访问我的主机文件夹,所以我在我的 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 卷文档

有人能帮我吗?

标签: javascaladockerjenkinscontainers

解决方案


在容器内,卷路径是/var/tmp

那么你的代码应该是:

val folders: Array[File] = new File("/var/tmp/") 
  .listFiles
  .filter(_.isDirectory)

您可以在您提供的链接上找到有关 Docker 卷绑定语法的详细信息:

-v 或 --volume:由三个字段组成,以冒号字符(:) 分隔。字段必须按正确的顺序排列,每个字段的含义不是很明显。

  • 在绑定挂载的情况下,第一个字段是主机上文件或目录的路径。
  • 第二个字段是文件或目录将在容器中挂载的路径
  • 第三个字段是可选的,是以逗号分隔的选项列表

推荐阅读