2014-07-17 48 views
8

我想從docker hub中託管的私有存儲庫中拖出docker圖像https://registry.hub.docker.com/u/myname/myapp像這樣使用docker遠程API。該doc是並不清楚如何指定這樣Docker遠程API從碼頭中心私人註冊表中拉動

curl -XPOST -H "X-Registy-Auth: base64_encoded_authconfig_object" "http://localhost:4243/images/create?fromImage=myname/myapp" 

This也POST請求的認證證書上究竟是如何產生的authconfig不細說。

This關於這樣的一個結構,一個基地64編碼的JSON發送會談:

{ 
    "index_url": { 
    "username": "string", 
    "password": "string", 
    "email": "string", 
    "serveraddress": "string" 
    } 
} 

但犯規解釋什麼是index_url和serveraddress。他們是

index_url = https://registry.hub.docker.com/u/myname/myapp 
serveraddress = https://registry.hub.docker.com 

上述配置給我404,可能註冊中心私人回購沒有被識別。

我也試過基地64編碼的內容,我的〜/ .dockercfg

{ 
    "https://index.docker.io/v1/": { 
    "auth":"xxxxxxxxxxxxxxxxxxx==", 
    "email":"[email protected]" 
    } 
} 

你能告訴我如何生成編碼authconfig對象Base64和得到上面的curl命令工作。

在此先感謝

泊塢版本

Client version: 0.11.1 
Client API version: 1.11 
Go version (client): go1.2.1 
Git commit (client): fb99f99 
Server version: 0.11.1 
Server API version: 1.11 
Git commit (server): fb99f99 
Go version (server): go1.2.1 
+0

@alpha_cod喜的base-64編碼JSON字符串,你從私有註冊成功地使用泊塢窗遙控拉圖像API? – lephix

回答

9

我有同樣的問題。

這裏的「原始」 AuthConfig對象,您應該使用憑據傳遞:

 
{ 
    "username":"your_registry_username_or_email", 
    "password":"*****", 
    "auth":"", // leave empty 
    "email":"[email protected]" 
} 

然後你必須「編碼」,它使用Base64編碼

你沒有告訴你正在使用什麼語言,但如果需要,this awesome site將讓你在一次點擊中編碼你的對象。或者,從一個shell:一個使用curl

  • 一個工作的例子

    X-Registry-Auth: eyJ1c2VybmFtZSI6InlvdXJfcmVnaXN0cnlfdXNlcm5hbWVfb3JfZW1haWwiLCJwYXNzd29yZCI6IioqKioqIiwiYXV0aCI6IiIsImVtYWlsIjoieW91ckBlbWFpbC50bGQifQ== 
    

    這裏:

    echo '{"username":"username","password":"*****", "auth":"","email":"[email protected]"}' | base64 
    


    然後,就通過編碼值的頭r.getitlive.io提供的註冊表

  • 在'192.168.60'偵聽的docker守護進程。10:8888' :
 
curl -X POST -d "" \ 
    -H "X-Registry-Auth: eyJ1c2VybmFtZSI6InlvdXJfcmVnaXN0cnlfdXNlcm5hbWVfb3JfZW1haWwiLCJwYXNzd29yZCI6IioqKioqIiwiYXV0aCI6IiIsImVtYWlsIjoieW91ckBlbWFpbC50bGQifQ==" \ 
    'http://192.168.60.11:8888/images/create?fromImage=r.getitlive.io/cool/repo&tag=latest' 

注:我不能使它通過將遠程註冊表端點/ URL在AuthConfig對象的serveraddress領域的工作(還)。這就是爲什麼我要將註冊表主機添加到fromImage=參數。

+0

謝謝你的幫助。我嘗試了上面的curl命令。它說無效fromImage值(無效的命名空間的名稱(U),只有[A-Z0-9_]是允許的,大小爲4至30),當我用https://registry.hub.docker.com/u/myname/myapp或registry.hub.docker.com/myname/myapp。從圖像似乎並不接受任何URL,但形式爲myname/myapp,在這種情況下,它說404作爲這個存儲庫不公開 –

+0

嗯...嘗試完全刪除'registry.hub.docker.com',因爲它是默認。而是使用'?fromImage = myname/myapp'。 – mbarthelemy

+0

,給出了一個404,作爲Dockerhub註冊表的隱含提及不承認 –

相關問題