如何从Java项目运行Docker容器?

请任何人都可以告诉我如何运行docker容器从Java代码,我想做一个使用docker的SaaS,一旦用户login,我应该从Java代码启动一个memcached容器,此解决scheme不起作用:

Process p = Runtime.getRuntime().exec("docker images"); 

Docker cmds通常在git bash上运行,而不是在cmd上运行。
PS:我在窗户上使用docker。

谢谢。

我很抱歉,当我打开一个新的shell(客户端)时,我必须对它进行configuration,以便知道如何连接到在virtualbox中运行的docker守护进程。 我必须运行设置shell环境的cmd,因为quickstartterminal会自动执行它。 所以我不得不运行以下内容,然后将输出粘贴回到我的cmd shell中:

 docker-machine env --shell cmd default 

现在它完美的工作。

更新(感谢@thaJeztah):最好使用Java库直接连接到docker守护进程。
链接到API https://docs.docker.com/engine/reference/api/remote_api_client_libraries/

我假设你正在使用Docker Toolbox for Windows。

docker指挥并不需要大写字母D 也许尝试

 Process p = Runtime.getRuntime().exec("docker images"); 

但是,因为你可能在Windows上运行这个代码,无论如何这可能工作。

另外要考虑的是DOCKER_HOST环境variables的值,它必须相应地设置,以指示DOCKER_HOST客户端如何与docker引擎进行通信。

在你的情况下,Docker客户端运行在Windows上,而docker引擎运行在VirtualBox中的虚拟机中。

Runtime.getRuntime().exec()提供的shell将不会设置DOCKER_HOST环境variables。

另一种方法是使用--host-H docker客户端选项来指定如何连接到docker引擎:

 Process p = Runtime.getRuntime().exec("docker --host=tcp://<some IP>:2376 images");