一、前言
? ? 以下分為兩種情況說明docker對harbor私有倉庫的訪問配置,一種是harbor使用自建證書配置https,一種是使用公有證書配置https
二、docker配置
? ? ?harbor使用自建證書的情況
? ? ?使用自建證書對harbor進行https配置,docker會將該倉庫識別成不安全倉庫,從該倉庫中拉去取鏡像或者推送鏡像時會報錯,即使使用瀏覽器訪問該harbor也是提示不安全的連接,所以需要在docker的daemon.json文件中配置信任該不安全倉庫后,才能從該倉庫拉取鏡像
? ? ?vi /etc/docker/daemon.json
{"insecure-registries": ["harbor.apex.com"] #信任不安全倉庫配置
}
? ? 配置daemon.json后還并不能正常訪問,這時使用docker訪問harbor倉庫時會報證書驗證的錯誤,因為還需要在docker這邊配置harbor的證書才能正常的使用https訪問harbor倉庫,以下是沒在docker配置證書時的報錯信息
?關于docker訪問harbor https的配置在harbor官方中也有說明和配置:Harbor docs | Configure HTTPS Access to Harbor
? 為docker配置證書
? 創建存放證書的路徑,最后的目錄一定要改為自己的域名
? mkdir -p??/etc/docker/certs.d/harbor.apex.com/
? 將配置harbor時的證書拷貝到該目錄下,然后再使用ca證書生成一個cert證書
? cd?/etc/docker/certs.d/harbor.apex.com/
??openssl x509 -inform PEM -in harbor.crt -out harbor.cert
? 該目錄下一共有三個證書harbor.crt、harbor.key、harbor.cert
? 重啟docker
? systemctl restart docker
? 再次訪問驗證就不會再出現證書的報錯問題
??harbor使用公有證書的情況
? 使用公有證書配置harbor后,docker訪問harbor倉庫不會出現不安全倉庫的提示,使用瀏覽器訪問也不會提示不安全的連接,所以不用再配置daemon.json文件信任該倉庫,但是還是需要對docker進行證書的配置,不然還是會提示證書報錯,我這里使用的是阿里云的ssl公有證書
創建docker的存放公鑰目錄
?mkdir -p??/etc/docker/certs.d/harbor.ylbeijing.com/
將配置harbor的阿里云ssl證書放到該目錄下
cd?/etc/docker/certs.d/harbor.ylbeijing.com/ && ls
阿里云的ssl證書一共有三個,我這邊都放到了docker的配置目錄下,但是生成cert證書需要使用阿里云證書里的公鑰證書去生成
openssl x509 -inform PEM -in harbor.ylbeijing.com_public.crt -out harbor.ylbeijing.com.cert
生成完cert證書后重啟docker即可正常訪問私有倉庫
使用容器版docker必須要用公鑰配置的harbor,不然容器版的docker是沒法配置daemon.json的,使用公鑰后直接把證書生成后拷貝掛載到容器版的docker中,就可以正常拉鏡像