2016-12-01 54 views
0

我試圖在不使用gcloud接口的情況下將GitLab CI與Google Container Registry一起使用。我如何讓Google Container Registry接受我的json證書?

使用下節在這裏列出「使用JSON密鑰文件」的文檔: https://cloud.google.com/container-registry/docs/advanced-authentication

我下載我的服務帳戶憑據文件作爲JSON文件:

{ 
    "type": "service_account", 
    "project_id": "REDACTED", 
    "private_key_id": "REDACTED", 
    "private_key": "-----BEGIN PRIVATE KEY-----\nBIGLONGLISTOFGARBLEDTEXTNSTUFF\n-----END PRIVATE KEY-----\n", 
    "client_email": "[email protected]", 
    "client_id": "NUMBERSNUMBERSNUMBERS", 
    "auth_uri": "https://accounts.google.com/o/oauth2/auth", 
    "token_uri": "https://accounts.google.com/o/oauth2/token", 
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", 
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/somethingsomething%40developer.gserviceaccount.com" 
} 

我已經然後試圖在使用指定的命令記錄:

docker login -u _json_key -p "$(cat google_cred.json)" https://gcr.io 

即產生以下錯誤:

Cannot connect to the Docker daemon. Is the docker daemon running on this host? 

docker login https://gcr.io爲我提供了一個用戶名/密碼交互提示,所以它不是我的本地docker安裝問題,據我所知。

有什麼我失蹤了嗎?

回答

0

看起來您的客戶端無法與您的Docker守護進程進行通信,我認爲一件簡單的事情就像docker ps返回相同的消息?

你在命令前面需要一個sudo嗎?你通常如何調用Docker?

+0

'搬運工ps'或任何其他搬運工命令正常工作,其中包括'搬運工登錄的https:// gcr.io';後者給我提供了一個用戶名/密碼提示,但沒辦法提供json文件作爲憑證。我相信它與JSON證書文件的格式(包含所有特殊字符和換行符)有關,但我不能肯定地說,並且確實沒有辦法診斷。 –

+0

您使用的是什麼版本的碼頭?我嘗試完全一樣,我沒有使用JSON密鑰文件的問題。你檢查過你的docker守護進程日誌文件嗎?您可能想要啓用守護程序的調試模式以獲取更多信息 – Wei

+0

Docker版本1.12.3,版本6b644ec。我沒有檢查日誌文件。我不知道有這樣的事情存在。 :D –

0

在嘗試使用docker登錄之前,需要確保通過本地泊塢窗連接到Google Compute Engine實例。因此命令序列(在MacOS)是這樣的:

export GOOGLE_APPLICATION_CREDENTIALS=<your-cred.json> 
eval $(docker-machine env <your-google-instance>) 
docker login -u _json_key -p "$(cat <your-cred.json>)" https://gcr.io 
相關問題