Docker:一个容器可以执行docker ps或者docker的图片吗?

我想实现一个web服务来控制我的“dockerVPS”。

所以我想到了一个nodejs + express脚本,只需执行docker docker images或者docker ps命令来响应web调用。

但是我认为我不能在docker容器中执行docker命令,对不对?

从另一个容器控制容器状态的最佳方法是什么?

请注意,我的所有容器都是“仅限点”,所以用户也应该从Web服务启动,遵循日志并最终杀死它们,全部来自API调用,所有内容都来自我的控制器容器。

你能build议我什么?

我不build议直接使用Docker守护进程套接字,因为它不安全。 该守护程序套接字具有root权限。 这意味着你可以根据需要做任何事情。

所以一般来说,我build议在使用需要访问Docker套接字的Docker镜像之前仔细考虑,即使只具有只读权限,因为它可能会打开您的环境以承担一些额外的风险。

– 由raesene 的Docker.sock的危险

但是,如果要保护对套接字的访问,则可以使用Docker远程API(HTTP / HTTPS):

  1. 您可以使用HTTPS保护API ,它只会允许客户端通过由CA证书签名的证书进行身份validation)
  2. 该API是一个REST API,并使用JSON,我认为更容易理解如何控制Docker
  3. 您的应用程序可能在一个单独的服务器上

API文档可以在这里find,你可以用cURL来testing它。

因为你使用Node.js,你可以使用这个npm包: dockerode ( README文件中的文档),这将简化任务:)。

你需要添加到你的docker run命令的事实,你装入docker套接字,所以

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

现在您可以在启动的容器中启动任何docker命令