安装harbor之前,需要安装好Python-2.7+,Docker-1.10+,Docker Compose-1.6.0+。

  1. # 版本检验
  2. python --version
  3. sudo docker-compose --version
  4. 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证书

root用户操作。

Ø 生成CA证书

  1. mkdir -p /data/cert
  2. cd /data/cert
  3. openssl genrsa -out ca.key 4096
  4. openssl req -x509 -new -nodes -sha512 -days 3650 \
  5. -subj "/C=CN/ST=Shenzhen/L=Shenzhen/O=chinatelecom/OU=ecloudcaas/CN=192.168.0.101" \
  6. -key ca.key \
  7. -out ca.crt

Ø 生成域名证书

  1. cd /data/cert
  2. openssl genrsa -out 192.168.0.101.key 4096
  3. openssl req -sha512 -new \
  4. -subj "/C=CN/ST=Shenzhen/L=Shenzhen/O=chinatelecom/OU=ecloudcaas/CN=192.168.0.101" \
  5. -key 192.168.0.101.key \
  6. -out 192.168.0.101.csr

Ø 生成ext文件

Chrome已经不再支持证书中的commonName匹配,实际上,自2017年1月起就需要subjectAltName这个规则了。主要是subjectAltName,这里写的IP.1=${IP}还可以写DNS.1=${YOUR_DOMAIN_NAME}。

  1. cd /data/cert
  2. cat > v3.ext <<-EOF
  3. authorityKeyIdentifier=keyid,issuer
  4. basicConstraints=CA:FALSE
  5. keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
  6. extendedKeyUsage = serverAuth
  7. subjectAltName = @alt_names
  8. [alt_names]
  9. IP.1=192.168.0.101
  10. EOF

Ø 重新生成服务端证书

  1. cd /data/cert
  2. openssl x509 -req -sha512 -days 3650 \
  3. -extfile v3.ext \
  4. -CA ca.crt -CAkey ca.key -CAcreateserial \
  5. -in 192.168.0.101.csr \
  6. -out 192.168.0.101.crt

Ø 生成客户端证书

  1. cd /data/cert
  2. 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}/目录下。

  1. mkdir -p /etc/docker/certs.d/192.168.0.101
  2. cp /data/cert/192.168.0.101.cert /etc/docker/certs.d/192.168.0.101/
  3. cp /data/cert/192.168.0.101.key /etc/docker/certs.d/192.168.0.101/
  4. cp /data/cert/ca.crt /etc/docker/certs.d/192.168.0.101/

Ø 私仓登记

注意:daemon.json **是Docker的配置文件,默认是没有的,需要我们手动创建。**

  1. sudo vi /etc/docker/daemon.json

配置如下:

  1. {
  2. "insecure-registries": ["192.168.0.101"]
  3. }

重启服务:

  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker

3.安装Harbor

Ø 安装包解压缩

  1. cd /share
  2. wget -P /share/ https://github.com/goharbor/harbor/releases/download/v1.9.2/harbor-offline-installer-v1.9.2.tgz
  3. sudo su
  4. tar -xvf harbor-offline-installer-v1.9.2.tgz -C /usr/local/
  5. rm -rf /share/harbor-offline-installer-v1.9.2.tgz

Ø 修改配置文件

如果使用Harbor 1.8或者1.9版本,切记配置文件中https需要顶格,证书和port需要缩进相同单位,不然会报错。

  1. cd /usr/local/harbor
  2. cp harbor.yml harbor.yml.bak
  3. sudo vi harbor.yml

配置如下:

  1. hostname: docker-node1
  2. ...
  3. https:
  4. port: 443
  5. certificate: /data/cert/192.168.0.101.crt
  6. private_key: /data/cert/192.168.0.101.key
  7. ...

Ø 更新参数

  1. cd /usr/local/harbor
  2. ./prepare

Ø 安装

  1. cd /usr/local/harbor
  2. ./install.sh

4.Harbor服务启停

Harbor的日常运维管理是通过docker-compose来完成的,Harbor本身有多个服务进程,都放在Docker容器之中运行,可以通过docker ps或者docker-compose来查看:

  1. cd /usr/local/harbor
  2. sudo docker-compose start
  3. sudo docker-compose restart
  4. sudo docker-compose stop
  5. sudo docker-compose ps

5.验证

WebUI入口:https://192.168.0.101
账户口令(默认):admin/Harbor12345

Ø 创建仓库项目

过程略,仓库名称:busybox。

Ø 登录私仓

  1. sudo docker login 192.168.0.101
  2. sudo docker logout

Ø 上传镜像到私仓

  1. # 给镜像打标签(镜像名字规范:{仓库地址:端口/镜像名字:版本})
  2. sudo docker tag busybox:latest 192.168.0.101/busybox/busybox:1.0.0
  3. # 上传打标签后的镜像到仓库(需要先登录私仓)
  4. sudo docker push 192.168.0.101/busybox/busybox:1.0.0

Ø 从私仓下载镜像

  1. # 下载镜像时如果不指定tag将会把该镜像的所有tags都下载下来
  2. sudo docker pull 192.168.0.101/busybox/busybox:1.0.0

6.Docker Clinet

Ø 私仓登记

  1. sudo vi /etc/docker/daemon.json

配置如下:

  1. {
  2. "registry-mirrors": ["https:mirror.ccs.tencentyun.com",
  3. "https://kuamavit.mirror.aliyuncs.com",
  4. "https://registry.docker-cn.com",
  5. "https://docker.mirrors.ustc.edu.cn"],
  6. "insecure-registries": ["https://192.168.0.101"],
  7. "max-concurrent-downloads": 10,
  8. "log-driver": "json-file",
  9. "log-level": "warn",
  10. "log-opts": {
  11. "max-size": "10m",
  12. "max-file": "3"
  13. }
  14. }

重启服务:

  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker

Ø 登录私仓

  1. sudo docker login 192.168.0.101
  2. sudo docker logout

Ø 上传镜像到私仓

  1. # 给镜像打标签(镜像名字规范:{仓库地址:端口/镜像名字:版本})
  2. sudo docker tag busybox:latest 192.168.0.101/busybox/busybox:1.0.0
  3. # 上传打标签后的镜像到仓库(需要先登录私仓)
  4. sudo docker push 192.168.0.101/busybox/busybox:1.0.0

Ø 从私仓下载镜像

  1. # 下载镜像时如果不指定tag将会把该镜像的所有tags都下载下来
  2. sudo docker pull 192.168.0.101/busybox/busybox:1.0.0

参考

Harbor1.9部署并配置https:
https://www.cnblogs.com/ghl1024/p/12318641.html