我有两个 docker 镜像:
CLI 工具是一个非常重的 docker 文件,需要几个小时来编译。我正在尝试从网络服务器调用 CLI 工具,但不确定如何从这里开始。有没有办法让 1 中创建的命令在 2 中可用?
此时我尝试处理卷,但没有成功。谢谢!
答案 0 :(得分:1)
Docker 的设计假设容器通过网络进行通信,而不是通过命令行。所以最干净的解决方案是创建一个简单的微服务,它封装了 CLI 工具,可以通过 HTTP 调用。
作为一种快速而肮脏的 hack,您还可以将 sshd
用作这样的微服务,而无需编写任何代码。
另一种不涉及网络的替代方法是使用绑定挂载使 Docker 守护进程的套接字在 webserver 容器中可用:
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
然后您应该能够从容器内与主机守护程序通信,前提是您已在映像中安装了 docker
命令行工具。但是,请注意,这会使您的应用程序强烈依赖 Docker,这可能并不理想。另请注意,它本质上赋予容器根访问主机系统的权限!
(请注意,这与 Docker-in-Docker 不同,后者在容器内运行第二个 Docker daemon,通常不推荐使用,除非是特殊用例。)