Windows:如何启动dockerVM att系统启动

我正处于需要在基于Windows的构build服务器(通常使用Arch / Debian Linux)上运行docker的情况,而且我找不到在系统引导时自动启动docker VM的方法。 在Linux上,这将是一个服务,但在Windows上,似乎并非如此。

我遵循https://docs.docker.com/engine/installation/windows/上的说明,当我用$ docker-machine create创builddocker VM时,所有的东西都运行了,但是如何把它作为Windows服务或者类似的呢?

目标是能够使用构buildDocker镜像,作为容器启动,并针对它们运行e2etesting。 由于我们正在使用TeamCity来构build关于解决这个问题的任何想法,所以TeamCity也可以工作。

我前段时间写了一个小webapp,它有一个系统依赖,只有unix系统可用,所以docker是自然的select(虽然我在stream浪汉方面已经取得了一些成功)

我正在使用Windows进行开发,并在Docker容器中运行此Web应用程序。

所以我遇到了同样的问题,“如何在系统启动时启动”?

我结束了一个小的batch file在我的自动启动目录中,包含如下行:

docker-machine start default docker run -d -p 8080:8080 -v //c/Users/%USERNAME%/somepath:/c/Users/%USERNAME%/somepath my/image --some.webapp.param=some-webapp-param-value 

第一个调用启动“默认”虚拟机,但你应该能够在那里指定一个不同的虚拟机。 第二次调用运行“my / image”docker容器,将8080端口暴露给主机系统,并在我的用户主目录中安装“somepath”。 一定要指定“-d”参数,因为它在后台运行容器(检查“docker run –help”)

之后,我的web应用程序可以到达“默认虚拟机”的IP地址(在我的情况下,这是192.168.99.100,这可能会在您的系统上有所不同,您可以检查输出时,首次启动这个“docker快速启动terminal” IP地址将被logging到控制台。)

有了这个我可以像往常一样使用我的浏览器,将其指向“ http://192.168.99.100:8080 ”,并可以使用我的webapp。

希望有帮助=)


编辑

所述batch file在手边,其中有3个选项:

  • 将batch file放在自动启动目录中(需要交互式用户会话,因此可能不适合服务器实例)

  • 通过Windows的任务调度程序来安排batch file的执行。 在那里你可以设置“在电脑启动时运行”作为触发任务。 无论交互式会话(login的用户)是否可用,该任务都将运行

  • 使用像NSSM这样的服务包装将batch file安装为Windows服务