从 Docker 容器中的 Java 应用程序访问 Windows 10 中的文件夹

Posted

技术标签:

【中文标题】从 Docker 容器中的 Java 应用程序访问 Windows 10 中的文件夹【英文标题】:Accessing folders in Windows 10 from a java application in a Docker container 【发布时间】:2021-08-17 22:35:50 【问题描述】:

美好的一天! 我是 Docker 新手,真的需要帮助。 系统:Windows 10、Docker 桌面 应用程序:Java Spring-Boot 应用程序,根据一定的逻辑传输系统不同文件夹中的文件。包装在 Docker 容器中

问题:Java Spring-Boot 应用程序在 Windows 10 中看不到文件夹(任何,例如“我的文档”, “C:\Program Files”等等。 应用程序应从“C:\Users\Denis\Downloads”文件夹中获取文件并将其放入“C:\Users\Denis\Documents”文件夹中, 但我得到一个错误:java.lang.NullPointerException: null "文件夹不存在"

这是我的 Dockerfile:

FROM adoptopenjdk / openjdk8
ARG JAR_FILE = target / relocator.jar
WORKDIR / opt / app
COPY $ JAR_FILE app.jar
ENDPOINT ["java", "- jar", "app.jar"]

我需要向 Dockerfile 添加什么以及在“控制台”中执行哪些命令?请详细一点,因为我已经花了很多时间,但没有结果。 谢谢:)

【问题讨论】:

Docker 的主要设计目标之一是容器中的程序无法以您描述的方式访问主机文件。这个程序需要在容器中,还是可以直接在宿主系统上运行? 您对 docker 的工作原理了解多少? 【参考方案1】:

docker 内的应用程序无权访问容器外的文件系统。为此,您需要将卷附加到您的容器。 此处描述了整个概念和操作方法:https://docs.docker.com/storage/volumes/。

【讨论】:

以上是关于从 Docker 容器中的 Java 应用程序访问 Windows 10 中的文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何使用未部署在 swarm 中的 docker 容器从 docker swarm 访问服务?

在 docker 容器中使用 java 访问类路径中的 JSON 文件时面临 FileNotFoundException(SprintBootApplication)

无法访问 docker 容器中的 REST 端点

从 docker 容器(linux 上的 docker)访问主机 postgresql

如何从 docker 容器访问 localhost? [复制]

Namenode 无法从 Docker 容器外部访问