如何将docker命令发送到另一台机器上的容器?

考虑一下,我的本地机器名为mylocal ,远程机器名为myremote1myremote2myremote3myremote4 。 我需要将docker命令发送到远程机器来pipe理容器。 有没有一种方法可以从我的本地机器轻松pipe理这些容器?

这可以很容易地通过使用端口侦听揭露您的docker服务器。 有两种方法可以做到这一点

检查下面的URL

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。 这不是一个build议的方法,因为如果这些IP是可公开访问的,那么有些人就可以侵入你的系统并获得完全的访问权限。

监听本地接口

更好的方法是监听本地接口。 因此,您将-H tcp://127.0.0.1:2376添加到服务命令。 现在,docker守护进程只在本地主机上监听,不会被暴露。

所以为了暴露我们的系统上的端口,我们使用ssh隧道代理

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

以上命令将远程机器的2376端口映射到本地2376端口,直到ssh连接打开。 一旦closures了ssh连接,隧道也会closures。 所以你可以使用DOCKER_HOST访问远程机器

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

与以前的方法不同的是我们指定的IP和我们创build的隧道。 多一点工作,但更安全