我想知道Docker是否可以运行容器中主机中安装的应用程序,这样我就不需要在每个映像上安装该应用程序,这会浪费硬盘空间。
我知道 Linux 是不同的,因为它需要本地依赖项和包,但我想知道是否可以像在 Windows VM 中那样使用它。在Windows Hyper-V中,我通过与容器共享包含便携式应用程序的网络文件夹并从Windows VM内部运行应用程序来实现此目的。谢谢。
您可以将主机上包含可执行文件的目录链接到容器中。然后,它将在容器中访问。为此,您可以使用 VOLUMES -- 将主机目录挂载为数据卷,并将主机目录(此处:/tmp/foo(挂载到容器(此处:/foo(中,并在容器的位置/foo/foo.sh 中执行名为 foo.sh 的脚本:
mkdir /tmp/foo
echo -e "#!/bin/shnnecho foo" > /tmp/foo/foo.sh
docker run --rm -v /tmp/foo:/foo alpine sh /foo/foo.sh
=> foo
同样,您可以将主机中的二进制文件添加到容器中...但我不认为这是有意的,也不应该使用,因为容器应该作为一个独立的、孤立的"轻量级虚拟机"工作。您向主机添加了不必要的依赖项,这似乎不是一个优雅的解决方案。