您的 docker login 密碼加密沒?

您的 docker login 密碼加密沒?

docker login alert

在使用外部倉庫(例如,Azure Container Registry)都需要先行在 Docker Host 進行 docker login 登入。登入後,使用 *.azurecr.io 進行 docker pulldocker push 就跟平常使用 Docker Hub 一樣自然。不過,在 Docker Engine 18.09 之後,提高了整個安全性檢查機制,如上圖,當我們執行登入 Azure ACR 的動作之後,它會給你一個明顯的大提示,你的密碼沒加密哦!

docker login <yourname>.azurecr.io
Username: <username>
Password: <password>
WARNING! Your password will be stored unencrypted in C:\Users\<user>\.docker\config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

跟著說明文件,很快就能找到解決方式,不過還是筆記小小注意事項。

Credentials store

預設的登入密碼明文儲存於 ~.docker\config.json 組態檔,似類下圖:

docker config file

我們能透過一個 credentials helpers 的幫忙,將憑證儲存至外部安全的地方。

一、先到 https://github.com/docker/docker-credential-helpers/releases 下載對應的作業系統版本。

例如,我下載的是 docker-credential-wincred-v0.6.0-amd64.zip for Windows 的版本,解壓縮後的 .exe 放置 PATH 環境變數下任一目錄之下即可。這裡我們統一放置於 C:\Program Files\Docker

二、修改 ~.docker\config.json 組態檔,移除之前所有憑證密碼設定內容,加入以下組態:

  • 要刪除原本明文設定也很簡單,執行 docker logout 即可。
{
  "credsStore": "wincred"
}

這裡 wincred 是要注意的地方,你如果照文件寫:

{
  "credsStore": "osxkeychain"
}

是無法執行成功。文件看了很久,也沒看出什麼,但很明顯,這個 osxkeychain 是給 OS X 用的。直到回頭看看 Windows 執行檔的名稱 docker-credential-wincred.exe 心裡有個底,測試一下:

docker login for credentials helpers

很明顯,不只成功,而且原先的警告訊息也不見了。

  • 後來發現是我眼睛有問題,人家有寫
  • Docker CE 預設已安裝與設定好 Credentials store。也就是在 Docker EE 你才需要處理 Credentials store 的問題。
  • 在寫完此文後,發現還有更簡單的處理方式,在解壓縮 docker-credential-wincred.exe 放置好了之後,直接執行 docker logoutdocker login,Docker 發現有 docker-credential-wincred.exe 存在會自動設定 ~.docker\config.json 組態檔。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。