docker 的坑是真尼玛多,私有认证都卡了我两天,看官方文档都要靠猜鄙视下,废话不多说,记录下,搞起
两台机器,harbor jenkins
使用域名登录harbor,我这里只做了host绑定,如果是生产或者有条件,直接在dns里做a记录,然后申请第三方的ca证书,注意:一定要记住申请ca证书时的所有信息
1,自制证书 在harbor上操作
mkdir /opt/cakeycd /opt/cakey/openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt #自签名CAopenssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.studeylinux.com.key -out harbor.studeylinux.com.csr #生成csr文件openssl x509 -req -days 365 -in harbor.studeylinux.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.studeylinux.com.crt #CA签名
现在目录下有6个文件
total 24-rw-r--r-- 1 root root 2106 Feb 10 05:52 ca.crt #CA的自签名证书-rw-r--r-- 1 root root 3272 Feb 10 05:52 ca.key #CA的私钥-rw-r--r-- 1 root root 17 Feb 11 08:58 ca.srl #自动生成的文件-rw-r--r-- 1 root root 2009 Feb 11 08:58 harbor.studeylinux.com.crt #CA签名后的用于配置nginx https的crt证书-rw-r--r-- 1 root root 1817 Feb 11 08:56 harbor.studeylinux.com.csr #申请签名的csr文件,此文件主要用户申请crt证书-rw-r--r-- 1 root root 3268 Feb 11 08:56 harbor.studeylinux.com.key #域名的私钥
2,修改harbor配置文件,现在用的是harbor0.5版本,无需修改nginx
cd /usr/local/src/harborvim harbor.cfghostname = harbor.studeylinux.comui_url_protocol = httpscrt_country = CNcrt_state = Beijing crt_location = YiZhuangcrt_organization = ZQDLcrt_organizationalunit = ITcrt_commonname = harbor.studeylinux.comcrt_email = 894818965@qq.com
注意:以上信息,都是在生成ca证书的时候填写的,要记住,也要卸载harbor的配置文件里
3,编辑docker的配置文件
vim /etc/sysconfig/dockerOPTIONS='--selinux-enabled --log-driver=journald' #删除-insecure-registry信息
这里需要说明一下-insecure-registry ,docker 1.3.2以后必须启用的tls 认证需要,启用了,就是规避认证,我们用https加密,所以要把这个信息去掉,默认是没有的
4,重新加载docker和harbor配置,并重启
systemctl restart docker./preparedocker-compose downdocker-compose up -d
5,此时再访问harbor web,就会出现https 认证的页面了
6,即使是本地harbor登录,也需要ca认证,但是必须把ca文件cp 到指定目录位置
mkdir /etc/docker/certs.d/harbor.studeylinux.comcp /opt/cakey/ca.crt /etc/docker/certs.d/harbor.studeylinux.com/docker login harbor.studeylinux.comUsername: adminPassword:Login Succeeded
7,远程jenkins 登录harbor,
mkdir /etc/docker/certs.d/harbor.studeylinux.comscp /etc/docker/certs.d/harbor.studeylinux.com/ca.crt harborIP:/etc/docker/certs.d/harbor.studeylinux.com/ca.crtdocker login harbor.studeylinux.comUsername: adminPassword:Login Succeeded
至此,可以把jenkins 构建好的images push到私有仓库了