如何在另一个 Docker 主机上运行 Docker 镜像?

sbr*_*tla 0 docker docker-compose

我们目前正在使用 Docker 进行开发,目前正在研究如何使用 Docker 在其他环境中运行我们的软件,例如登台和生产。

我们现在要做的是使用 Jenkins 编译我们的 Java 软件,然后 - 在同一个 Jenkins 构建中 - 还构建一个 Docker 镜像,Java 软件将使用 docker-compose 在其中运行。

现在,在构建 Docker 映像后,我们需要将该映像传送到运行软件的(远程)Docker 主机。这个远程 Docker 主机与运行 Jenkins 的主机不同。我相信我们可以通过遵循这个问题的公认答案来做到这一点

但是,一旦将映像复制到 Docker 主机 - 我们如何使用 启动该映像docker-compose?我们复制的图像只是图像 - 而不是docker-compose.yml文件或Dockerfile就此而言。

Mir*_*lav 5

您可以在 Docker 主机上配置 docker 守护程序以侦听 TCP 端口而不是/var/run/docker.sock套接字。您只需要在该主机上使用一个额外参数运行 dockerd:

-H tcp://<IP>:<PORT>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档

完成后,您可以告诉 Jenkins 节点上的 docker-compose 通过 TCP 连接到远程守护程序,而不是通过提供-H指向 Docker 主机和端口的相同标志来使用本地套接字。

这样,任何 docker 容器都将在该机器上启动。