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

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

我们现在所做的是,我们用Jenkins编译我们的Java软件,然后 – 在Jenkins的构build中 – 也构build一个Docker镜像,Java软件将使用docker-compose运行。

现在,在Docker映像build立之后,我们需要将该映像传送到要运行软件的(远程)Docker主机。 这个远程Docker主机与Jenkins运行的主机不是同一个主机。 我相信我们可以按照这个问题接受的答案来做到这一点 。

但是,一旦图像被复制到Docker主机 – 我们如何开始与docker-compose图像? 我们复制的图像只是图像 – 而不是docker-compose.yml文件或Dockerfile

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

 -H tcp://<IP>:<PORT> 

详细信息请参阅文档 。

一旦你有了这些,你可以通过提供相同的-H标志指向你的Docker主机和端口来告诉你的Jenkins节点上的docker-compose来通过TCP连接到远程守护进程,而不是使用本地套接字。

这样任何docker集装箱将在该机器上启动。

例如,亲自设置私人Dockerregistry或在Dockerhub上使用私有回购站。 这也意味着Dockerhub本身可以执行映像构build(在他们的服务器上或您自己的),然后将它们提交到回购标记“最新”,当它成功 – 非常有用的国际海事组织。

如果你在Linux上运行,你不必直接在容器中安装Docker。 您可以直接绑定docker二进制文件(通常位于/ usr / bin / docker)。 请注意,绑定安装套接字不会给你一个全新的Docker,而是从容器内访问现有的Docker守护进程。 如果你想在Docker二进制文件中烧制一个图片,你可以使一个叫做laoyumi / docker的东西,然后在另一个图片中“快速”访问它,你只需从laoyumi / docker启动Dockerfile即可。