如何在远程主机上运行docker-compose?

我在本地撰写文件。 如何在DOCKER_HOST=<some ip>上运行远程主机上的容器包docker-compose up -dDOCKER_HOST=<some ip> docker-compose up -d

如果您不需要在本地计算机上运行Docker容器,但仍然在同一台远程计算机上,则可以在泊坞窗设置中更改此设置。

在本地机器上:可以用-H参数控制远程主机

 docker -H tcp://remote:2375 pull ubuntu 

要使用docker-compose,你应该在/ etc / default / docker中添加这个参数

在远程机器上

您应该从外部地址更改监听,而不是只有unix套接字。

有关更多详细信息,请参阅将Dock Docker绑定到另一个主机/端口或Unix套接字 。

如果您需要在多个远程主机上运行容器,则应该configurationDocker Swarm

从撰写文件

撰写CLI环境variables

DOCKER_HOST

设置docker守护进程的URL。 和Docker客户端一样,默认是unix:///var/run/docker.sock。

所以我们可以做

 export DOCKER_HOST=tcp://192.168.1.2:2375 docker-compose up 

假设您能够在远程机器上login,另一种在该机器上运行docker-compose命令的方法是使用SSH

通过scpdocker-compose.yml文件复制到远程主机,通过SSH运行docker-compose.yml docker-compose命令,最后通过删除文件清理。 这可能如下所示:

 scp ./docker-compose.yml SomeUser@RemoteHost:/tmp/docker-compose.yml ssh SomeUser@RemoteHost "docker-compose -f /tmp/docker-compose.yml up" ssh SomeUser@RemoteHost "rm -f /tmp/docker-compose.yml" 

你甚至可以使它更短,并通过使用docker-compose.yml-f -选项来省略发送和移除docker-compose.yml文件,这将期望docker-compose.yml文件从stdin传送。 只需将其内容input到SSH命令中:

 cat docker-compose.yml | ssh SomeUser@RemoteHost "docker-compose -f - up" 

如果在docker-compose.yml文件中使用环境variablesreplace,则上述命令不会将其replace为远程主机上的本地值,并且由于variables未设置,您的命令可能会失败。 为了解决这个问题,在将内容传递给SSH命令之前,可以使用envsubst实用程序用内存中的本地值replacevariables:

 envsubst < docker-compose.yml | ssh SomeUser@RemoteHost "docker-compose up"