首页 > 解决方案 > 不使用 ssh 或 docker.sock 从其他容器执行 docker exec 命令

问题描述

主要问题是我有两个容器:containerA 和 containerB。containerB 是 Portia 的容器,它正在运行,由于外部原因我无法停止。在容器A中,我需要执行容器B的docker exec。

我已经阅读了两个主要的解决方案,我已经尝试过的第一个解决方案是使用 ssh 在主机中运行脚本,但我不能拥有没有密码的用户,并且在我看来,给密码似乎不是最好的方法去做这个。第二种方式是使用 docker.sock 和一个 docker compose 文件,但是很多人在评论中说这不是一种安全的方式。

有人可以用其他方式解释我吗,或者如果我错了,为什么?谢谢你的时间。

标签: dockercontainersexeccommunicationportia

解决方案


正如您在问题中提到的,您可以找到两种可能的方式来远程运行 docker 命令。

  • 使用 ssh
  • 使用 docker 套接字

您认为这两者都不安全。

但事实并非如此。我不确定 ssh,但可以保护 docker 套接字。

看看这个

您必须tls在您的 docker daemon socket 上启用,以使其安全。然后你可以以安全的方式远程运行 docker。

引用上述链接的第一段。

默认情况下,Docker 通过非联网的 UNIX 套接字运行。它还可以选择使用 HTTP 套接字进行通信。

如果您需要通过网络以安全的方式访问 Docker,您可以通过指定 tlsverify 标志并将 Docker 的 tlscacert 标志指向受信任的 CA 证书来启用 TLS。

在守护程序模式下,它只允许来自由该 CA 签名的证书进行身份验证的客户端的连接。在客户端模式下,它只连接到具有该 CA 签署的证书的服务器。

希望这可以帮助。


推荐阅读