从其他容器启动和停止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立你的应用程序。