如何将docker命令发送到另一台机器上的容器?
考虑一下,我的本地机器名为mylocal
,远程机器名为myremote1
, myremote2
, myremote3
, myremote4
。 我需要将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的隧道。 多一点工作,但更安全
- 如何在Azure App Service Linux上为自定义的Docker镜像装载文件夹
- 使用Linux内核4.3.0运行docker得到了iptables nat错误
- dockerd进程CPU是否包含容器使用的CPU?
- 如何以非root用户身份运行docker映像?
- 没有为test_sshd发布公共端口“22 / tcp”
- 无法使用ASP.NET 5,Docker和Ubuntu连接到MSSQL服务器
- 我如何知道我的CPU支持Docker?
- dockerized jira后面traefik-Proxy抛出混合内容错误
- 将docker-compose.yml转换成DockerAPI / services / create接受的json?