我想知道Docker是否可以在容器中运行安装在主机中的应用程序,这样我就不需要在每个浪费硬盘空间的图像上安装应用程序。
我知道Linux是不同的,因为它需要本地依赖和包,但我想知道是否可以像在Windows VM中那样使用它。 在Windows Hyper-V中,我通过与容器共享包含便携式应用程序的网络文件夹并从Windows VM内部运行应用程序来完成此操作。 谢谢。
答案 0 :(得分:2)
您可以将包含可执行文件的主机上的目录链接到容器中。然后它将在容器中访问。为此,您可以使用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
同样地,您可以将主机中的二进制文件添加到容器中......但我不认为这是有意的并且应该使用,因为容器应该作为独立的,孤立的"轻量级 - VM&#34 ;.你向主机添加了一个不必要的依赖,这似乎不是一个优雅的解决方案。