文章目录
一. 关于Harbor
- Harbor 是由VMware 公司开源的企业级的
Docker Registry
管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、镜像复制等功能。
二. 安装Harbor
Harbor提供了离线安装
(推荐)和在线安装
两种方式,具体安装过程可参考官方安装向导。
1. 安装基础依赖
- Harbor的安装需要
Docker
和Docker-compose
的支持,安装教程看这里。
2.下载安装Harbor
# 安装路径为 /usr/local/
$ wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.1.tgz
$ tar -zxvf harbor-offline-installer-v1.9.1.tgz -C /usr/local/
$ cd /usr/local/harbor && ls
# harbor.yml install.sh LICENSE prepare #包含的文件
3.设置HTTPS
- Harbor推荐使用HTTPS方式访问, 官方也给出了详尽的Http配置向导
第一步:设定仓库的主机名
(或主机IP)
# 生成相关目录
$ mkdir -p /data/cert
$ mkdir -p /data/harbor
$ mkdir -p /etc/docker/certs.d/reg.xxx.com/
#主机或IP,用于建立CA证书发行站点
$ HARBOR_HOST=reg.xxx.com
第二步:证书颁发机构信息(特别注意Common Name
项)
$ mkdir ./ssl && cd ssl
# 方式一:推荐
$ openssl genrsa -out ca.key 4096
$ openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=BJ/L=BJ/O=xxx/OU=JSB/CN=${HARBOR_HOST}" \
-key ca.key \
-out ca.crt
# 方式二:跟方式一相同,只是有分步骤的证书内容填写过程
$ openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt
# ******************************证书生成过程演示************************
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:xxx
Organizational Unit Name (eg, section) []:JSB
Common Name (eg, your name or your server's hostname) []:reg.xxx.com
Email Address []:reg@xxx.com
# *********************************************************************
第三步:生成服务器证书
# 创建私钥
$ openssl genrsa -out ${HARBOR_HOST}.key 4096
# 生成签名请求
$ openssl req -sha512 -new \
-subj "/C=CN/ST=BJ/L=BJ/O=xxx/OU=JSB/CN=${HARBOR_HOST}" \
-key ${HARBOR_HOST}.key \
-out ${HARBOR_HOST}.csr
# 生成注册表主机证书
$ cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=reg.xxx.com
DNS.2=reg.xxx
EOF
$ openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in reg.xxx.com.csr \
-out reg.xxx.com.crt
第四步:配置和安装证书
cp reg.xxx.com.crt /data/cert/
cp reg.xxx.com.key /data/cert/
openssl x509 -inform PEM -in reg.xxx.com.crt -out reg.xxx.com.cert
cp reg.xxx.com.cert /etc/docker/certs.d/reg.xxx.com/
cp reg.xxx.com.key /etc/docker/certs.d/reg.xxx.com/
cp ca.crt /etc/docker/certs.d/reg.xxx.com/
# 证书目录
/etc/docker/certs.d/
└── yourdomain.com:port
├── yourdomain.com.cert <-- Server certificate signed by CA
├── yourdomain.com.key <-- Server key signed by CA
└── ca.crt <-- Certificate authority that signed the registry certificate
4. 配置harbor
- V1.8.0 后,harbor配置文件由原先的
harbor.cfg
改为harbor.yml
$ vim harbor.yml
hostname:reg.xxx.com #完全限定域名或IP地址(不要使用localhost或127.0.0.1)。
data_volume: /data/harbor #存储卷对应的宿主机目录,如: /data/harbor
harbor_admin_password:Harbor12345 #管理员的初始密码(仅在首次启动时有效),默认用户名/密码为:admin / Harbor12345。
# https配置
https:
port: 443
# 证书文件(绝对路径)
certificate: /data/cert/reg.xxx.com.crt
private_key: /data/cert/reg.xxx.com.key
5. 安装Harbor
# 准备 & 安装 & 查看
$ ./prepare
$ ./install.sh
$ docker-compose ps #查看harbor相关的docker进程
# 测试便可移除安装包,但不建议移除整个harbor安装目录,以备配置修改。
$ rm -f /usr/local/harbor/harbor.v1.9.1.tar.gz
6. 附:修改配置
# 修改端口号后,goharbor/nginx会自动做端口代理映射,即 https://reg.xxx.com 仍然有效。
$ cd /usr/local/harbor && vim harbor.yml #修改配置(如80、443端口、数据卷等)
# 执行命令docker-compose
$ docker-compose stop
$ docker-compose up -d
# 重启docker(非必须)
$ systemctl daemon-reload
$ systemctl restart docker.service
三. 客户端访问
1.修改Hosts
- 如果Harbor宿主机位于局域网,则需要配置客户端Hosts
$ vim /etc/hosts
192.168.1.x reg.xxx.com
2.访问Harbor站点
- 浏览器打开
https://reg.xxx.com
,如果有风险提示,忽略风险。 - 登录(admin/Harbor12345),记得修改密码并
关闭对外注册功能
。
3. 终端登录(Mac版)
- 进入Mac
钥匙串/系统/证书
,将reg.xxx.com
证书拖进去并设置为 始终信任(证书可从服务端拷贝或从浏览器导出),安装成功后记得`重启docker服务。
# 证书安装成功后,便可在终端登录harbor仓库
$ docker login reg.xxx.com
4. 终端登录(Linux版)
# 从服务器拷贝证书
$ mkdir -p /etc/docker/certs.d/reg.xxx.com
$ scp root@reg.xxx.com:/usr/local/harbor/ssl/reg.xxx.com.crt \
/etc/docker/certs.d/reg.xxx.com
# 重启docker服务,并登录容器仓库
$ systemctl restart docker
$ docker login reg.xxx.com
5. 注销登录
$ deocker logout
# docker登录缓存信息存储在下面文件中
$ cat ~/.docker/config.json
参考
https://www.cnblogs.com/haoprogrammer/p/11023926.html
https://www.jianshu.com/p/fb2ae3dc7986