2017-07-26 141 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,我們創造了隧道。多一點工作,但更安全

相關問題