一、前言
以下分为两种情况说明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中,就可以正常拉镜像