2017-07-26 139 views
0

考虑一下,我的本地机器名为mylocal,远程机器名为myremote1myremote2,myremote3,myremote4。我需要将docker命令发送到远程机器来管理容器。有没有一种方法可以轻松地从本地机器管理这些容器?如何将docker命令发送到另一台机器上的容器?

+0

你检查了[Docker Engine API(v1.26)](https://docs.docker.com/engine/api/v1.26/)吗? – tgogos

+0

Docker引擎是否使用TLS绑定到端口2376? (或2375没有TLS,如果你可以冒险) – Grimmy

+0

确定这是一个好主意?为什么不直接启用Docker Swarm呢? https://docs.docker.com/engine/swarm/另类选项,如kubernetes(用于管理Docker主机)也越来越简单的设置和更常见的地方https://kubernetes.io/ –

回答

0

这可以很容易地通过使用端口侦听揭露您的码头服务器来实现。有两种方法可以做到这

检查下面的网址

https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-socket-option

侦听所有接口

您更新搬运工服务加入-H tcp://0.0.0.0:2376所有接口上听。在这种情况下,你可以通过设置DOCKER_HOST

export DOCKER_HOST=tcp://<remotemachine1ip>:2376 
docker run -it busybox 

这将您的远程计算机上运行busybox的容器,并打开一个shell你到相同的从系统中执行命令到远程计算机。这不是一种建议的方法,因为如果这些IP是可公开访问的,那么有些人就可以侵入您的系统并获得完全访问权。

上本地接口

听一个更好的办法来做到这一点是监听本地接口。因此,您将-H tcp://127.0.0.1:2376添加到服务命令。现在,docker守护进程只在本地主机上侦听,并且不会公开。

所以要暴露我们的系统上的端口,我们使用SSH隧道代理

ssh -L 2376:127.0.0.1:2376 <user>@remoteip1 

上面的命令映射远程机器的端口2376我们当地2376端口,直到ssh连接是开放的。一旦关闭了ssh连接,隧道也会关闭。所以,你可以访问使用DOCKER_HOST

export DOCKER_HOST=tcp://127.0.0.1:2376 
docker run -it busybox 

从以前的做法所不同的远程机器是我们指定的IP,我们创造了隧道。多一点工作,但更安全

相关问题