Linux + Docker - 如何从Docker容器中运行主机的应用程序?

问题描述:

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

我知道Linux是不同的,因为它需要本地依赖和包,但我不知道是否有可能像Windows VM一样使用它。 在Windows Hyper-V中,我通过与容器共享包含便携式应用程序的网络文件夹并从Windows VM内部运行应用程序来完成此操作。 谢谢。

您可以将包含可执行文件的主机上的目录链接到容器中。然后它将在容器中被访问。为此,可以使用VOLUMES -- Mount a host directory as a data volume并将主机目录(此处为/ tmp/foo)装入容器(此处为/ foo),然后在容器位置/foo/foo.sh中执行名为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”。你添加一个不必要的依赖到它的主机,这似乎不是一个优雅的解决方案。