安装harbor之前,需要安装好Python-2.7+,Docker-1.10+,Docker Compose-1.6.0+。
# 版本检验
python --version
sudo docker-compose --version
sudo docker --version
1.安装介质准备
版本:harbor-offline-installer-v1.9.2.tgz
下载:https://github.com/goharbor/harbor/releases
安装:https://github.com/goharbor/harbor/blob/master/docs/install-config/_index.md
将安装介质上传至${MY_VAGRANT_HOME}/docker/share。
2.自签SSL支持https证书
Ø 生成CA证书
mkdir -p /data/cert
cd /data/cert
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Shenzhen/L=Shenzhen/O=chinatelecom/OU=ecloudcaas/CN=192.168.0.101" \
-key ca.key \
-out ca.crt
Ø 生成域名证书
cd /data/cert
openssl genrsa -out 192.168.0.101.key 4096
openssl req -sha512 -new \
-subj "/C=CN/ST=Shenzhen/L=Shenzhen/O=chinatelecom/OU=ecloudcaas/CN=192.168.0.101" \
-key 192.168.0.101.key \
-out 192.168.0.101.csr
Ø 生成ext文件
Chrome已经不再支持证书中的commonName匹配,实际上,自2017年1月起就需要subjectAltName这个规则了。主要是subjectAltName,这里写的IP.1=${IP}还可以写DNS.1=${YOUR_DOMAIN_NAME}。
cd /data/cert
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
IP.1=192.168.0.101
EOF
Ø 重新生成服务端证书
cd /data/cert
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in 192.168.0.101.csr \
-out 192.168.0.101.crt
Ø 生成客户端证书
cd /data/cert
openssl x509 -inform PEM -in 192.168.0.101.crt -out 192.168.0.101.cert
Ø 客户端证书配置
将带域名的cert和key,ca.crt拷贝到Docker主机/etc/docker/certs.d/${YOUR_DOMAIN_NAME}/目录下。
mkdir -p /etc/docker/certs.d/192.168.0.101
cp /data/cert/192.168.0.101.cert /etc/docker/certs.d/192.168.0.101/
cp /data/cert/192.168.0.101.key /etc/docker/certs.d/192.168.0.101/
cp /data/cert/ca.crt /etc/docker/certs.d/192.168.0.101/
Ø 私仓登记
注意:daemon.json **是Docker的配置文件,默认是没有的,需要我们手动创建。**
sudo vi /etc/docker/daemon.json
配置如下:
{
"insecure-registries": ["192.168.0.101"]
}
重启服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
3.安装Harbor
Ø 安装包解压缩
cd /share
wget -P /share/ https://github.com/goharbor/harbor/releases/download/v1.9.2/harbor-offline-installer-v1.9.2.tgz
sudo su
tar -xvf harbor-offline-installer-v1.9.2.tgz -C /usr/local/
rm -rf /share/harbor-offline-installer-v1.9.2.tgz
Ø 修改配置文件
如果使用Harbor 1.8或者1.9版本,切记配置文件中https需要顶格,证书和port需要缩进相同单位,不然会报错。
cd /usr/local/harbor
cp harbor.yml harbor.yml.bak
sudo vi harbor.yml
配置如下:
hostname: docker-node1
...
https:
port: 443
certificate: /data/cert/192.168.0.101.crt
private_key: /data/cert/192.168.0.101.key
...
Ø 更新参数
cd /usr/local/harbor
./prepare
Ø 安装
cd /usr/local/harbor
./install.sh
4.Harbor服务启停
Harbor的日常运维管理是通过docker-compose来完成的,Harbor本身有多个服务进程,都放在Docker容器之中运行,可以通过docker ps或者docker-compose来查看:
cd /usr/local/harbor
sudo docker-compose start
sudo docker-compose restart
sudo docker-compose stop
sudo docker-compose ps
5.验证
WebUI入口:https://192.168.0.101
账户口令(默认):admin/Harbor12345
Ø 创建仓库项目
Ø 登录私仓
sudo docker login 192.168.0.101
sudo docker logout
Ø 上传镜像到私仓
# 给镜像打标签(镜像名字规范:{仓库地址:端口/镜像名字:版本})
sudo docker tag busybox:latest 192.168.0.101/busybox/busybox:1.0.0
# 上传打标签后的镜像到仓库(需要先登录私仓)
sudo docker push 192.168.0.101/busybox/busybox:1.0.0
Ø 从私仓下载镜像
# 下载镜像时如果不指定tag将会把该镜像的所有tags都下载下来
sudo docker pull 192.168.0.101/busybox/busybox:1.0.0
6.Docker Clinet
Ø 私仓登记
sudo vi /etc/docker/daemon.json
配置如下:
{
"registry-mirrors": ["https:mirror.ccs.tencentyun.com",
"https://kuamavit.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn"],
"insecure-registries": ["https://192.168.0.101"],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
重启服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
Ø 登录私仓
sudo docker login 192.168.0.101
sudo docker logout
Ø 上传镜像到私仓
# 给镜像打标签(镜像名字规范:{仓库地址:端口/镜像名字:版本})
sudo docker tag busybox:latest 192.168.0.101/busybox/busybox:1.0.0
# 上传打标签后的镜像到仓库(需要先登录私仓)
sudo docker push 192.168.0.101/busybox/busybox:1.0.0
Ø 从私仓下载镜像
# 下载镜像时如果不指定tag将会把该镜像的所有tags都下载下来
sudo docker pull 192.168.0.101/busybox/busybox:1.0.0
参考
Harbor1.9部署并配置https:
https://www.cnblogs.com/ghl1024/p/12318641.html