如何从主机操作系统运行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