如何从主机操作系统运行Docker容器的应用程序?

我使用docker容器与Ubuntu的14.04和一些C ++应用程序,我在docker集装箱内编译。

是否有可能从主机操作系统运行在容器内的应用程序(在我的情况下Win 7)?

就像是:

docker run <path-to-binary>/mybinary -f 10 -o output.txt

更新:

是的,这是可能的

docker run -it <my-image> <path-to-binary>/mybinary

所以理想情况下,我希望Docker中的应用程序就像Windows主机操作系统上的本机应用程序一样。

也可以在主机操作系统中指定文件和文件夹作为docker容器看不到的应用程序的input参数?

更新:

我试图在容器启动时加载共享文件夹

docker run -v C:\shared_with_VM:/temp my_image

并且

docker run -v "C:\shared_with_VM":/temp my_image

但是我得到错误:

 C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: Invalid bind mount spec "C:\\shared_with_VM:/temp": invalid mode: /temp. See 'C:\Program Files\Docker Toolbox\docker.exe run --help'. 

正如这里所说的,在Windows上正确的path格式应该是

docker run -v /c/shared_with_VM:/temp my_image

我不确定我是否正确理解你的问题

您可以将主机上的文件夹挂载到容器,以便从容器内访问该文件夹 :

 docker run -v /host/folder:/container/ -it <image> <executable> <arguments> 

例如:

 docker run -v /tmp:/tmphost -it ubuntu ls -al /tmphost # or in Windows docker run -v //c/Users/mrgloom/Desktop/data:/tmphost -it ubuntu ls -al /tmphost 

这将在容器中创build文件夹/container/并将其与/host/folder链接。 然后,您可以双向读取/写入这些文件夹中的文件。 您的二进制文件必须指向input文件,该文件可能位于/container/input.txt