node.js - 从其他容器启动和停止 docker 容器

标签 node.js docker

我需要从另一个容器内启动、停止和重新启动容器。

例如:

Container A -> start Container B

Container A -> stop Container C

我的 Dockerfile:

FROM node:7.2.0-slim

WORKDIR /docker
COPY . /docker
CMD [ "npm", "start" ]

Docker Version 1.12.3

我想避免使用 ssh 连接。有什么想法吗?

最佳答案

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

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

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

例如,请参阅 traefik 代理的 docker-compose 文件,该文件是一个监听主机上容器启动和停止的进程,以激活一些到它们的代理路由。您可以找到示例 in the traefik proxy repository .

为了能够与主机上的 docker 守护进程通信,您还需要在容器中安装 docker 客户端,或者使用一些适合您的编程语言的 docker api。有一个official list of such libraries for different programming languages in the docker docs .

当然,您应该知道您赋予容器哪些权限。设法利用您的应用程序的人可能会关闭您的其他容器,或者更糟糕的是,在您的系统上启动自己的容器,这些容器可以轻松地用于控制您的系统。当您构建应用程序时请记住这一点。

关于node.js - 从其他容器启动和停止 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40961073/

相关文章:

node.js - 以与系统无关的方式将文件读入行数组

docker - 生产者/消费者的Java代码无法在Docker安装程序中连接kafka

node.js - Sequelize : How to use AND operator in WHERE on the same column?

angularjs - 前端模板与后端模板

node.js - 为什么此代码无法创建 Sequelize 关联

Docker 注册表 https ://registry-1. docker.io/v2/: dial tcp 34. 200.90.16:443:未授权

linux - 操作系统和内核是不同的东西吗?

docker - 我们如何使用dpkg在dockerfile中的 Alpine 图像上安装google-chrome-stable?

java - 无法在 docker 中初始化类 sun.security.ec.SunEC 异常

javascript - Node中如何返回HTTP错误状态码?