检测是否在 Windows 容器中运行

3
我正在开发一款应用程序,需要在Linux和基于Windows的容器中运行。我知道当我在Docker中运行Linux容器时,会在容器内部创建一个文件/.dockerenv。因此,您的应用程序可以通过简单检查该文件是否存在来检测它是否在Docker容器中运行。然而,最近我下载了Windows版的Docker并开始尝试基于Windows的容器。所以,我创建了一个简单的Docker文件并从中启动了一个容器(遵循这篇文章:https://learn.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile)。我认为相同的文件将被创建在FS根目录下(例如C:\.dockerenv),但实际上没有这样的文件。那么,有人之前经历过这种情况吗?如何检测我的应用程序是否在基于Windows的容器中运行?谢谢!
1个回答

1
要确保您在容器中,您可以在Dockerfile中设置一个环境变量。
FROM ...
ENV INSIDE_DOCKER_CONTAINER=true
RUN ...

然后,您可以从您的应用程序中检查该环境变量是否已设置。还可以参考这个答案:https://dev59.com/yWAg5IYBdhLWcg3whrIV#65942222 要知道容器所在的操作系统,可能需要知道您的应用程序使用的编程语言。许多跨平台语言可以检测操作系统。
例如,如果您正在编写.NET C#,可以使用RuntimeInformation类进行检查。
RuntimeInformation.IsOSPlatform(OSPlatform.Windows);

或者,您的Dockerfile也可以简单地设置另一个环境变量。
FROM ...
ENV INSIDE_DOCKER_CONTAINER=true
ENV CONTAINER_OS=windows
RUN ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接