Linux+Docker - 如何从 Docker 容器中 运行 托管应用程序?

Linux+Docker - How to run host's apps from inside Docker container?

我想知道 Docker 是否可以 运行 在容器中的主机中安装应用程序,这样我就不需要在每个镜像上安装应用程序,这会浪费硬盘 space .

我知道 Linux 不同,因为它需要本地依赖项和软件包,但我想知道是否可以像在 Windows VM 中那样使用它。 在 Windows Hyper-V 中,我通过与 Windows VM 内部的容器和 运行 应用程序共享包含便携式应用程序的网络文件夹来做到这一点。 谢谢。

您可以 link 将主机上包含可执行文件的目录放入您的容器中。然后它将可以在容器中访问。为此,您可以使用 VOLUMES -- Mount a host directory as a data volume 并将主机目录(此处:/tmp/foo)挂载到您的容器(此处:/foo)中,并在容器的位置执行名为 foo.sh 的脚本 /foo/foo.sh:

mkdir /tmp/foo
echo -e "#\!/bin/sh\n\necho foo" > /tmp/foo/foo.sh

docker run --rm -v /tmp/foo:/foo alpine sh /foo/foo.sh
=> foo

以同样的方式,您可以将二进制文件从您的主机添加到您的容器中...但我不认为这是有意且不应该使用的,因为容器应该作为独立的、隔离的 "lightweight-VM".你给你的主机添加了一个不必要的依赖,这似乎不是一个优雅的解决方案。