docker - 不使用 ssh 或 docker.sock 从其他容器执行 docker exec 命令
问题描述
主要问题是我有两个容器:containerA 和 containerB。containerB 是 Portia 的容器,它正在运行,由于外部原因我无法停止。在容器A中,我需要执行容器B的docker exec。
我已经阅读了两个主要的解决方案,我已经尝试过的第一个解决方案是使用 ssh 在主机中运行脚本,但我不能拥有没有密码的用户,并且在我看来,给密码似乎不是最好的方法去做这个。第二种方式是使用 docker.sock 和一个 docker compose 文件,但是很多人在评论中说这不是一种安全的方式。
有人可以用其他方式解释我吗,或者如果我错了,为什么?谢谢你的时间。
解决方案
正如您在问题中提到的,您可以找到两种可能的方式来远程运行 docker 命令。
- 使用 ssh
- 使用 docker 套接字
您认为这两者都不安全。
但事实并非如此。我不确定 ssh,但可以保护 docker 套接字。
看看这个。
您必须tls
在您的 docker daemon socket 上启用,以使其安全。然后你可以以安全的方式远程运行 docker。
引用上述链接的第一段。
默认情况下,Docker 通过非联网的 UNIX 套接字运行。它还可以选择使用 HTTP 套接字进行通信。
如果您需要通过网络以安全的方式访问 Docker,您可以通过指定 tlsverify 标志并将 Docker 的 tlscacert 标志指向受信任的 CA 证书来启用 TLS。
在守护程序模式下,它只允许来自由该 CA 签名的证书进行身份验证的客户端的连接。在客户端模式下,它只连接到具有该 CA 签署的证书的服务器。
希望这可以帮助。
推荐阅读
- python - 解析VCF文件并插入数据库的慢python代码
- hadoop - Hadoop distcp to S3 性能很慢
- javascript - 如何创建固定输入掩码?
- c# - DataGridViewButtonColumn 是作为第 0 列的最后一列
- java - Java Spring Boot SwaggerUI
- javascript - Javascript:如何从 servlet 获取和打印数据
- html - 选择表单时是否可以将表单数据发送到服务器?
- amazon-sqs - AWS JDK 2 创建队列并订阅主题
- web-scraping - 谷歌importhtml动态表需要最后10个板球得分
- google-bigquery - 将参数化 BigQuery 自定义查询连接到数据洞察