在命令行裡用docker登陸harbor會出現如下信息,我看網上的文章大部分都是截圖說我登陸成功了,卻沒有人仔細看看如下這行寫的是什麼?
你的密碼將存儲在未加密的config.json文件中WARNING! Your password will be stored unencrypted in /home/turing/.docker/config.json.
之前文章也說過,我們公司對安全比較重視,這樣搭建完的私有鏡像倉庫也通過不了審核。那怎麼來合規呢?目前我採用的方法是使用pass命令工具+docker-credential-pass命令工具,
1、Pass工具
pass是個密碼存儲管理工具,主站是
https://www.passwordstore.org/
目前的穩定版是1.7.3,下載地址
https://git.zx2c4.com/password-store/snapshot/password-store-1.7.3.tar.xz
安裝方法非常簡單,解包後在解包後的安裝目錄中直接運行
make install
你就可以使用這個工具了。
2、Docker-Credential-Pass工具
主站是
https://github.com/docker/docker-credential-helpers/releases
目前最新版本0.6.3
wget https://github.com/docker/docker-credential-helpers/archive/v0.6.3.tar.gz
tar xzvf v0.6.3.tar.gz
cd docker-credential-helpers-0.6.3
make pass
這裡會自動生成一個bin目錄
cd bin
cp docker-credential-pass /usr/bin
3、生成GPG密鑰對
gpg --gen-key
輸入 userid , 這裡用harbor登陸賬戶admin測試
郵件地址,可以留你自己的郵件地址
然後會問你是否確定選用這個用戶表示,選擇O
然後會提示你輸入管理秘鑰兩次(非admin用戶登陸harbor的密碼),也是為了防止用戶忘記存儲的密碼。
查看現有秘鑰對
gpg --list-keys
如果有公鑰私鑰,務必先刪除私鑰,再刪除公鑰
gpg ---delete-secret-keys KEY-ID
gpg --delete-key KEY-ID
生成Harbor用戶admin的pass存儲環境,主目錄在~/.password-store
pass init admin
將admin用戶登陸Harbor的密碼加密後放置到password-store目錄中
pass insert admin
輸入兩次登陸Harbor的密碼
想刪除用如下命令
pass rm admin
還有更多的pass命令,大家看MAN手冊吧
4、登陸
修改 ~/.docker/config.json
為
然後在本地先登陸測試一下
登陸成功,不報錯,遠程用Windows服務器登陸試試,第一次登陸會報無效或過期,登陸成功後,logout再登陸就不報了。
至此,終於解決了Docker命令行登陸Harbor報警的問題。
閱讀更多 獅子愛溜達 的文章