关于 Linux Docker:Linux Docker – 如何从 Docker 容器内运行主机的应用程序?

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

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

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


您可以将主机上包含可执行文件的目录链接到容器中。然后它将可以在容器中访问。为此,您可以使用 VOLUMES -- 将主机目录挂载为数据卷,并将主机目录(此处为:/tmp/foo)挂载到您的容器(此处为:/foo)并在您的容器中执行一个名为 foo.sh 的脚本容器的位置 /foo/foo.sh:

1
2
3
4
5
6
7
mkdir /tmp/foo
echo -e"#\\!/bin/sh\
\
echo foo"> /tmp/foo/foo.sh

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

同样,您可以将二进制文件从您的主机添加到您的容器中……但我不认为这是有意的,也不应该使用,因为容器应该作为独立的、隔离的"轻量级虚拟机"工作"。您向主机添加了不必要的依赖项,这似乎不是一个优雅的解决方案。