【问题标题】:How to access files/folders outside docker container on host machine? [duplicate]如何访问主机上 docker 容器外的文件/文件夹? [复制]
【发布时间】:2021-10-14 16:14:40
【问题描述】:

我们正在创建开源工具“扫描仪”,它会在用户提供该文件夹/目录的路径作为输入(本地)后扫描特定目录中的文件

它运行良好,但现在我们需要使用 Docker 对其进行容器化,问题是我们无法在构建映像时绑定整个根/系统(因为在大多数情况下,它可能非常大,并且还会包含许多不必要的文件和文件夹等),但我们也想访问该特定文件夹中的文件,用户将为“扫描仪”提供文件夹路径(本地)并且将在容器之外

那么你知道如何做到这一点,我们可以从容器外部访问文件和文件夹并在运行时使用它们

【问题讨论】:

  • 如果没有用户启动容器的特殊设置,容器进程根本无法访问主机目录;当它这样做时,它使用一个不一定与主机路径相同的容器私有文件系统路径。如果您的应用程序的主要目标是扫描大量主机文件系统文件,那么将其与 Docker 容器中的主机文件系统隔离可能不是理想的打包方法。

标签: windows docker bind volumes


【解决方案1】:

您可以将应用设置为仅扫描图像中的当前文件夹。

从带有docker run ... 的映像运行容器时,如果设置-w 标志,则表示容器的默认工作目录。

使用-v 标志,您可以将主机中的目录挂载到容器工作目录(您使用-w 指示的目录)。

您可以在Maven Official image 及其Dockerfiles 中看到一个示例

$ docker run ... -v /my_files_to_compile:/usr/src/mymaven -w /usr/src/mymaven maven:3.3-jdk-8 mvn clean install

my_files_to_compile 是 java 源文件所在的主机目录。 /usr/src/mymaven 是主机目录将被挂载的位置,也是将要执行容器的路径/工作目录

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2014-03-29
    相关资源
    最近更新 更多