java - 如何通过docker容器访问文件夹主机?

标签 java scala docker jenkins containers

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

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

我读到the docker volumes documentation

有人可以帮助我吗?

最佳答案

容器内卷路径为/var/tmp

那么你的代码应该是:

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

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

-v 或 --volume:由三个字段组成,以冒号字符 (:) 分隔。 字段的顺序必须正确,并且每个字段的含义并不是立即显而易见的。

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

关于java - 如何通过docker容器访问文件夹主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59370780/

相关文章:

scala - 如何让 Gradle、Scoverage 和 Sonarqube 正常工作?

linux - Docker 不会对 daemon.json 应用更改

node.js - 无法从主机访问副本集mongodb(docker)

google-app-engine - 谷歌云 sdks 不启动 Docker 图像 Mac OS 的预览

java - 与评估数字是否为三角形的 while 语句混淆

multithreading - RxScala : How to keep the thread doing Observable.间隔还活着吗?

scala - 在 CHISEL 中创建查找表

java - 从可能为空的 Double 创建的 BigDecimal 的总和

java - 为什么相同的字体在从 Netbeans 运行的 Java 应用程序和从 Jar 运行的 Java 应用程序中看起来不同?

java - 以更短的方式编写 Java 长 If/Else 循环