为了账号安全,请及时绑定邮箱和手机立即绑定

Java 应用程序如何知道它在 Docker 容器中运行

Java 应用程序如何知道它在 Docker 容器中运行

汪汪一只猫 2021-10-20 14:36:54
我为我的应用程序编写了一个 DockerFile,主要是为了让它在 NAS 机器中运行(通过 Docker)。Web 界面允许用户遍历文件系统树以查找音乐文件,但是当使用 Docker 时,文件系统树是无关紧要的,除了 /Music 卷是用户在 NAS 上实际音乐文件夹的安装点。所以我只想显示 /Music 文件夹而不是整个文件系统树,为此应用程序需要知道它实际上是在 Docker 中运行,而不是在实际的本地 Linux 操作系统中运行。应用程序知道它在 docker 中的正确方法是什么,应用程序是用 Java 编写的。
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

当您运行容器添加volume选项时。

docker run -v /Music:/Music <image-name>

: 的右侧是您应用程序寻找目录的地方。我以为是/Music。

如果您真的想检查您的应用程序是否在 docker 中运行,您可以检查文件“/.dockerenv”是否存在。根据您的问题,您应该知道的一件事是,当您的应用程序在 docker 内运行时,除非您通过卷授予访问权限,否则它无法访问主机的文件系统。所以,如果你真正的 linux 机器有一个目录 /Music,你的应用程序就不能访问它。您通过 提供访问权限--volume。当您在 docker 中运行应用程序时,您可以将其视为在另一个 VM 或机器中运行以用于所有实际目的。这就是 Docker 本身的主要目的:提供隔离。


查看完整回答
反对 回复 2021-10-20
  • 2 回答
  • 0 关注
  • 686 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信