从其他容器启动和停止docker集装箱

我需要从另一个容器中启动,停止并重新启动容器。

例如:

容器A – >启动容器B.

容器A – >停止容器C

我的Dockerfile:

FROM node:7.2.0-slim WORKDIR /docker COPY . /docker CMD [ "npm", "start" ] Docker Version 1.12.3 

我想避免使用SSH连接。 有任何想法吗?

本身一个容器运行在一个孤立的环境中(例如,使用自己的文件系统或networking堆栈),因此没有直接的方式与正在运行的主机进行交互。 这当然是为了实现真正的隔离。

但有一种方法可以使用更多的权限来运行容器。 要与主机上的docker守护进程交谈,可以将主机系统的docker套接字安装到容器中。 这与您可能将某个主机文件夹挂载到容器中的方式相同。

 docker run -v /var/run/docker.sock:/var/run/docker.sock yourimage 

例如,请参阅traefik代理的docker-compose文件,该代理是一个在主机上启动和停止容器以启动一些代理路由的进程。 你可以在traefik代理库中find这个例子。

为了能够与主机上的docker守护进程交谈,您还需要在容器中安装docker客户端,或者使用一些docker API作为您的编程语言。 Docker文档中提供了不同编程语言的这些库的官方列表 。

当然,你应该知道你给容器的特权。 有人设法利用您的应用程序可能会closures您的其他容器,甚至更糟糕的是在您的系统上启动自己的容器,这些容器可以很容易地用来控制您的系统。 请记住,当你build立你的应用程序。