您的 docker login 密碼加密沒?
在使用外部倉庫(例如,Azure Container Registry)都需要先行在 Docker Host 進行 docker login
登入。登入後,使用 *.azurecr.io
進行 docker pull
或 docker 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 組態檔,似類下圖:
我們能透過一個 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 CE 預設已安裝與設定好 Credentials store。也就是在 Docker EE 你才需要處理 Credentials store 的問題。
- 在寫完此文後,發現還有更簡單的處理方式,在解壓縮 docker-credential-wincred.exe 放置好了之後,直接執行
docker logout
與docker login
,Docker 發現有 docker-credential-wincred.exe 存在會自動設定 ~.docker\config.json 組態檔。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。