在另一个 docker 镜像中使用 docker 镜像

时间:2021-02-24 15:36:15

标签: docker

我有两个 docker 镜像:

  1. 命令行工具
  2. 网络服务器

CLI 工具是一个非常重的 docker 文件,需要几个小时来编译。我正在尝试从网络服务器调用 CLI 工具,但不确定如何从这里开始。有没有办法让 1 中创建的命令在 2 中可用?

此时我尝试处理卷,但没有成功。谢谢!

1 个答案:

答案 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,通常不推荐使用,除非是特殊用例。)