【问题标题】:How to access to a folder host via a docker container?如何通过 docker 容器访问文件夹主机?
【发布时间】:2019-12-17 09:05:02
【问题描述】:

我实际上被共享文件的问题所困扰。

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

有人可以帮我吗?

【问题讨论】:

  • 您是否尝试过启动容器并通过 shell 登录?
  • 你好大牛,抱歉没看到你的留言。我会尽力回复你,谢谢你的回答:)

标签: java scala docker jenkins containers


【解决方案1】:

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

那么你的代码应该是:

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

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

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

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

【讨论】:

  • 您好纪尧姆,感谢您的回答! =) 我用你的代码更改了我的代码,但仍然是个问题。我添加了一个 println 来返回“文件夹”的大小,但仍然是 0,我知道有子文件夹。
  • 正如@daniu 在其评论中所说,您是否尝试过手动启动容器并通过 shell 登录它以检查“/var/tmp/”中已安装的内容?
  • 哎呀,我没有看到他的消息。我会尝试回到你身边
  • 感谢 Guillaume 和 Daniu 的帮助。你是正确的道路。我的第二个问题是我用你的代码更改了我的代码,但仍然是一个问题。我添加了一个 println 来返回“文件夹”的大小,但仍然是 0,我知道有子文件夹。这是因为我的主课有一些问题,所以码头工人在开始后直接停止了。我也解决了=)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 2021-10-14
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多