Harbor1.9部署与配置https

  • 2020 年 2 月 25 日
  • 笔记

版本信息

  • OS:CentOS Linux 7.6 Release
  • Docker:18.09.6
  • Docker-compose:1.24.1
  • Harbor:harbor-offline-installer-v1.9.0
  • IP:172.0.0.11

1. 安装 docker

1.1 配置 repository

yum install -y yum-utils device-mapper-persistent-data lvm2  yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  

1.2 安装最新版本 docker-ce

yum install -y docker-ce  

1.3 配置docker加速

  • 参考docker.hub:https://www.daocloud.io/mirror
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io  systemctl restart docker.service  

1.4 启动docker

systemctl start docker  systemctl enable docke  

2. 安装 docker-compose

2.1 下载二进制文件

curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose  
  • 如果需要安装其他版本的话,请修改上面命令中的版本号。

2.2 赋予二进制文件可执行权限

chmod +x /usr/local/bin/docker-compose  ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose  

2.3 安装命令补全功能

yum install -y bash-completion  curl -L https://raw.githubusercontent.com/docker/compose/1.24.1/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose  

2.4 测试是否安装成功

docker-compose --version  

3. harbor 开启 https

为什么要使用https协议

  • 因为不用 https 协议的话,docker 客户端需要修改配置,如果 docker 客户端多的话配置起来就很麻烦;
  • 如果使用 1.8 或者 1.9 版本,切记配置文件中 https 需要顶格,证书和 port 需要缩进相同单位,不然会报错;

3.1 创建 ca 证书

mkdir -p /data/cert  cd /data/cert  

3.2 生成 CA 的 key

cd /data/cert  openssl genrsa -out ca.key 4096  

3.3 生成 CA 的 crt

cd /data/cert  openssl req -x509 -new -nodes -sha512 -days 3650       -subj "/C=CN/ST=Beijing/L=Beijing/O=chinatelecom/OU=ecloudcaas/CN=172.0.0.11"       -key ca.key       -out ca.crt  

3.4 生成自己域名的 key

cd /data/cert  openssl genrsa -out 172.0.0.11.key 4096  

3.5 生成自己域名的 csr

cd /data/cert  openssl req -sha512 -new       -subj "/C=CN/ST=Beijing/L=Beijing/O=chinatelecom/OU=ecloudcaas/CN=172.0.0.11"       -key 172.0.0.11.key       -out 172.0.0.11.csr  

3.6 生成ext

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=172.0.0.11  EOF  

3.7 通过 ext 和 csr 生成 crt

cd /data/cert  openssl x509 -req -sha512 -days 3650       -extfile v3.ext       -CA ca.crt -CAkey ca.key -CAcreateserial       -in 172.0.0.11.csr         -out 172.0.0.11.crt  

3.8 将crt 转换成客户端用的 cert

cd /data/cert  openssl x509 -inform PEM -in 172.0.0.11.crt -out 172.0.0.11.cert  

3.9 将证书配置到docker客户端

mkdir -p /etc/docker/cert/172.0.0.11  cp /data/cert/172.0.0.11.cert /etc/docker/cert/172.0.0.11/  cp /data/cert/172.0.0.11.key /etc/docker/cert/172.0.0.11/  cp /data/cert/ca.crt /etc/docker/cert/172.0.0.11/  

3.10 创建 /etc/docker/daemon

cat > /etc/docker/daemon.json << EOF  { "insecure-registries":["http://172.0.0.11"] }  EOF  

3.11 重启 docker

systemctl daemon-reload  systemctl restart docker  

4. 安装 Harbor

4.1 下载 harbor 离线包

mkdir -p /home/harbor/  wget -P /home/harbor/ https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.0.tgz  cd /home/harbor/  tar xf harbor-offline-installer-v1.9.0.tgz  cd /home/harbor/harbor  cp harbor.yml harbor.yml.bak  

4.2 修改配置文件

  • 其他地方不动,只修改以下几处:
cd /home/harbor/harbor/  [root@harbor harbor]# egrep -v "^#|^$" harbor.yml|grep -v "#"  https:     port: 443     certificate: /home/harbor/cert/172.0.0.11.crt     private_key: /home/harbor/cert/172.0.0.11.key  

4.3 更新参数

cd /home/harbor/harbor/  ./prepare  

4.4 安装

cd /home/harbor/harbor/  ./install  

4.5 查看

  • Harbor 的日常运维管理是通过 docker-compose 来完成的,Harbor 本身有多个服务进程,都放在 docker 容器之中运行;
  • 可以通过 docker ps 或者 docker-compose 来查看;
cd /home/harbor/harbor/  [root@harbor harbor]# docker-compose ps         Name                     Command                       State                                        Ports  ----------------------------------------------------------------------------------------------------------------------------------------------  harbor-adminserver   /harbor/start.sh                 Restarting  harbor-core          /harbor/start.sh                 Up (health: starting)  harbor-db            /entrypoint.sh postgres          Up (healthy)            5432/tcp  harbor-jobservice    /harbor/start.sh                 Up  harbor-log           /bin/sh -c /usr/local/bin/ ...   Up (healthy)            127.0.0.1:1514->10514/tcp  harbor-portal        nginx -g daemon off;             Up (healthy)            80/tcp  nginx                nginx -g daemon off;             Up (healthy)            0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp  redis                docker-entrypoint.sh redis ...   Up                      6379/tcp  registry             /entrypoint.sh /etc/regist ...   Up (healthy)            5000/tcp  registryctl          /harbor/start.sh                 Up (healthy)  [root@harbor harbor]#

5. 网页登录和创建项目

  1. 在浏览器输入: https://172.0.0.11;
  2. 默认账号密码:admin / Harbor12345;
  3. 创建一个项目:os;

6. 镜像的推送

6.1 下载官方的 centos 镜像

docker pull centos:7.4.1708  

6.2 修改 TAG

docker tag centos:7.4.1708 172.0.0.11/os/centos:7.4.1708  docker images | grep centos  172.0.0.11/os/centos           7.4.1708            3afd47092a0e        2 months ago        197MB  centos                           7.4.1708            3afd47092a0e        2 months ago        197MB  

6.3 命令行登录 harbor

cat > /etc/docker/daemon.json << EOF  { "insecure-registries":["http://172.0.0.11"] }  EOF  systemctl daemon-reload  systemctl restart docker  [root@harbor harbor]# docker login 172.0.0.11  Username: admin  Password: Harbor12345  WARNING! Your password will be stored unencrypted in /root/.docker/config.json.  Configure a credential helper to remove this warning. See  https://docs.docker.com/engine/reference/commandline/login/#credentials-store  Login Succeeded  

6.4 推送镜像到harbor(需要login)

docker push 172.0.0.11/os/centos:7.4.1708  

6.5 在 harbor 中查看

7. 镜像的拉取

  • 假设有一台没有登录此 harbor 的 docker 客户端

7.1 创建 /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" : ["http://172.0.0.11"],    "max-concurrent-downloads": 10,    "log-driver": "json-file",    "log-level": "warn",    "log-opts": {      "max-size": "10m",      "max-file": "3"      }  }  

7.2 重启 Docker 生效

systemctl daemon-reload  systemctl restart docker  

7.3 拉取 harbor 中的镜像

docker login 172.0.0.11  docker pull 172.0.0.11/os/centos:7.4.1708