首页 > 解决方案 > 从 docker 容器内获取有关卷的信息

问题描述

在一个容器内,我构建了一个(C++)应用程序。源代码目录与--volume. 如果 docker 在 Linux 上运行,共享目录会全速运行,但如果 docker 在 mac 上运行,docker 必须桥接共享,导致速度下降。因此,我必须在开始编译之前将整个源目录复制到容器中。但此复制步骤仅在非 Linux 主机上是必需的。

如何检测共享是否“本机”共享?

我可以从容器内部获取有关主机操作系统的信息吗?

更新

此工作流程背后的想法是为定义的环境设置一个映像,以便为多个平台(win、mac、linux)交叉构建产品。否则,每个开发人员都安装了不同的 Linux 操作系统/编译器/组件等。

作为一个 docker 新手,我认为这个镜像(包含所有必需的 3rdParty 组件/编译器)可用于在启动时在容器中构建应用程序。

标签: docker

解决方案


我能想到的一种解决方法是,您可以使用 Mac 和 Windows 主机中都可用的特殊网络功能,但在 Linux 中不可用。

这是一个特殊的 dns 条目,可用于从容器内部获取主机的 ip - host.docker.internal。在此处此处阅读更多信息。

现在你只需要一个命令来获取一个布尔值,如果它解析与否。由于我不知道您使用的是哪个外壳,因此我不能肯定地说,但是这样的事情应该可以帮助您。


推荐阅读