2016-01-25 45 views
1

背景推到端口轉發的搬運工註冊表

有一個私人碼頭工人註冊表我沒有控制權。該註冊表無法從我的計算機訪問,但可以從我有權訪問的遠程服務器訪問。

這是我目前(相當低效的)工作流程:

# On my machine 
$ docker save IMAGE > FILE 
$ scp FILE SERVER 
$ ssh SERVER 
# On the server 
$ docker load < FILE 
$ docker tag -f IMAGE REGISTRY:5000/IMAGE 
$ docker push REGISTRY:5000/IMAGE 

問題

它永遠推的圖像,因爲我需要保存,上傳和即使加載整個壓縮包有在大多數碼頭層都沒有改變。

我試圖使用SSH轉發我的機器上的泊塢窗船籍港(5000)到端口:

$ curl localhost:5042/v2/ 
{} 

$ ssh -L 5042:REGISTRY:5000 SERVER 

現在我可以從我的機器的註冊表溝通但碼頭不會推圖像:

$ docker tag IMAGE localhost:5042/IMAGE 
$ docker push localhost:5042/IMAGE 
The push refers to a repository [localhost:5042/IMAGE] (len: 1) 
Sending image list 
FATA[0000] Put http://localhost:5042/v1/repositories/IMAGE/: dial tcp 127.0.0.1:5042: connection refused 

我有一種感覺,問題是在不同的名稱/噸圖像的ag。在服務器上,我需要將其標記爲REGISTRY:5000/IMAGE,但是在本地主機上,這將無濟於事,因爲REGISTRY url無法從我的計算機訪問。

或者這個問題可能是由於我通過docker-machine運行docker的事實造成的。

問題

我可以以某種方式推到一個私人碼頭工人的註冊表,是端口轉發到本地端口?

回答

4

需要有兩個ssh隧道。一個來自本地機器(這個由docker客戶端使用)和一個來自docker-machine(這個由docker守護程序使用)。

docker-machine ssh 
ssh -L 5042:REGISTRY:5000 SERVER