银河麒麟v10离线安装harbor

1.安装docker

参考‘银河麒麟v10离线安装docker-ce

2.安装docker-compose

yum install docker-compose -y
以上文件可以到此处下载:‘docker-compose.zip
在这里插入图片描述

3.安装Harbor

cd /export/servers/harborrpm

  1. harbor包
    cd /export/servers/harborrpm
    yum install -y harbor-1.10.2-1.p02.ky10.aarch64.rpm
    以上文件可以到此处下载:harbor-1.10.2-1.p02.ky10.aarch64.rpm

  2. 配置
    cd /opt/harbor
    vim harbor.yml

    hostname: harbor01.io
    port: 80
    harbor_admin_password: Harbor12345 
    data_volume: /data
    location: /var/log/harbor
    
    
  3. 安装harbor
    cd /opt/harbor
    ./prepare #配置Harbor
    ./install.sh #安装Harbor 在这里插入图片描述

  4. 修改docker配置文件,使docker支持harbor
    vim /etc/docker/daemon.json文件,其中环境变量harbor01.io配置:192.168.0.5 harbor01.io

    {
    “registry-mirrors”: [“https://oelq8zt4.mirror.aliyuncs.com”],
    “insecure-registries”: [ “http://harbor01.io” ]

    }

    systemctl restart docker

  5. 设置Harbor开机启动
    vim /lib/systemd/system/harbor.service,写入如下

    [Unit]
    Description=Harbor
    Requires=docker.service
    After=syslog.target network.target
    
    [Service]
    Type=oneshot
    ExecStartPre=/usr/bin/docker-compose -f /opt/harbor/docker-compose.yml down
    # #需要注意harbor的安装位置
    ExecStart=/usr/bin/docker-compose -f /opt/harbor/docker-compose.yml up -d
    ExecStop=/usr/bin/docker-compose -f /opt/harbor/docker-compose.yml down
    # This service shall be considered active after start
    RemainAfterExit=yes
    
    [Install]
    # Components of this application should be started at boot time
    WantedBy=multi-user.target   
    

    systemctl enable harbor #设置harbor开机自启
    systemctl start harbor #启动harbor

  6. 测试:docker ps命令查看:有几个容器没起来,如图一直Restarting在这里插入图片描述
    分析: docker logs d1edfca48363查看restaring的容器日志‘Error response from daemon: configured logging driver does not support reading’,其余已启动的容器也报此error。
    尝试解决:(成功)

cd /var/log/harbor & tail -20f registryctl.log,看到报错:

Aug 12 10:17:37 172.18.0.1 registryctl[3559635]: ls: /harbor_cust_cert: No such file or directory
Aug 12 10:17:37 172.18.0.1 registryctl[3559635]: 2021-08-12T02:17:37Z [FATAL] [/registryctl/main.go:82]: Failed to load configurations with error: open /etc/registryctl/config.yml: permission denied

cd /var/log/harbor & tail -f proxy.log,看到报错:

Aug 12 10:21:44 172.18.0.1 proxy[3559635]: 2021/08/12 02:21:44 [emerg] 1#0: open() "/etc/nginx/nginx.conf" failed (13: Permission denied)
Aug 12 10:21:44 172.18.0.1 proxy[3559635]: nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (13: Permission denied)
-------------------------
1. 安装nginx : yum install -y nginx(不做这步也可以)
2. 给/common/registryctl/config.yml赋权:chmod 777 -R /opt/harbor/common/
3. 检查端口是否被占用/检查80端口是否统一:检查的文件有
/opt/harbor/docker-compose.yml查看proxy.ports:- 80:8080
	/opt/harbor/common/config/registry/config.yml查看auth.realm: http://192.168.0.15/service/token
	/opt/harbor/harbor.yml查看port: 80
	cat /etc/docker/daemon.json
4. 重启docker:systemctl daemon-reload   及 systemctl restart docker	
5. 重启harbor:docker-compose down 及 docker-compose up -d

用docker-compose ps命令再次查看,如上图:所有容器都成功了! docker ps查看到端口为80:
在这里插入图片描述
访问http://192.168.0.5,页面出现了,admin/Harbor12345(默认账号/密码)


4.附:给harbor加CA认证

为了兼容ide安装,在192.168.0.15设置hosts:192.168.0.15 harbor01.io

默认情况下,Harbor不附带CA证书认证的。也就是说,Harbor 可以在没有安全性的情况下部署,以便可以快速通过HTTP连接到访问。但是,只有在没有外部互联网连接、局域网的测试或开发环境中,才适合使用HTTP。

不过,不考虑安全性,在私人使用的话也可以直接在互联网使用。当然,如果直接在互联网使用HTTP协议,就会有可能遭受中间人攻击。

要配置HTTPS,必须创建SSL证书。您可以使用由受信任的第三方CA签名的证书,也可以使用openssl进行自签名证书。本节介绍如何使用 OpenSSL创建CA,以及如何使用CA签署服务器证书和客户端证书。您可以使用其他CA工具进行自签名,例如 Let’s Encrypt

不加CA认证会导致docker push 时出现“Get https://harbor01.io/v2/: dial tcp 192.168.0.15:443: connect: connection refused”问题

1. 生成证书颁发机构证书

​ 1.1 生成CA证书:生成CA证书私钥 ca.key

在生产环境中,一般是应该从CA获得证书,例如:在阿里云购买域名之后就可以下载相关域名的CA证书了。但是在测试或开发环境中,对于这种自己定义的内网域名,就可以自己生成自己的CA证书。要生成CA证书,则运行以下命令。

mkdir /export/servers/ssl -p && cd /export/servers/ssl

openssl genrsa -out ca.key 4096

[root@cn01 ssl]# openssl genrsa -out ca.key 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
...............................................++++
....................................................................++++
e is 65537 (0x010001)
[root@cn01 ssl]# ls
ca.key

​ 1.2 根据上面生成的CA证书私钥,再来生成CA证书 ca.crt

[root@cn01 ssl]# openssl req -x509 -new -nodes -sha512 -days 3650 \
>     -subj "/C=CN/ST=Beijing/L=Beijing/O=Harbor/OU=Harbor/CN=harbor01.io" \
>     -key ca.key \
>     -out ca.crt
[root@cn01 ssl]# ls
ca.crt  ca.key

# 参数说明:
-new 指生成证书请求
-x509 表示直接输出证书
-key 指定私钥文件
-days 指定证书过期时间为3650天
-out 导出结束后证书文件
-subj 输入证书拥有者信息
CN 可以填写harbor服务器的域名
2.生成服务器证书

​ 2.1 上面生成了 ca 的证书,那么下面来继续生成服务器的证书。证书通常包含一个.crt文件和一个.key文件,例如yourdomain.com.crtyourdomain.com.key。在这里,因为我上面设置的服务器域名为harbor01.io

openssl genrsa -out harbor01.io.key 4096

[root@cn01 ssl]# openssl genrsa -out harbor01.io.key 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
.............................................................................................................................................................++++
e is 65537 (0x010001)
[root@cn01 ssl]# ls
ca.crt  ca.key  harbor01.io.key

2.2 生成证书签名请求

[root@cn01 ssl]# openssl req -sha512 -new \
>     -subj "/C=CN/ST=Beijing/L=Beijing/O=Harbor/OU=Harbor/CN=harbor01.io" \
>     -key harbor01.io.key \
>     -out harbor01.io.csr
[root@cn01 ssl]# ls
ca.crt  ca.key  harbor01.io.csr  harbor01.io.key

2.3 生成一个x509 v3扩展文件

无论是使用FQDN还是IP地址连接到Harbor主机,都必须创建此文件。这样的话,Harbor主机才能够生成符合主题备用名称(SAN)和x509 v3的证书扩展要求。下面的配置中,DNS的部分需要替换为自己Harbor服务器的域名。

[root@cn01 ssl]# cat > v3.ext <<-EOF
> authorityKeyIdentifier=keyid,issuer
> basicConstraints=CA:FALSE
> keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
> extendedKeyUsage = serverAuth
> subjectAltName = @alt_names
>  
> [alt_names]
> DNS.1=harbor01.io
> DNS.2=harbor01
> EOF
[root@cn01 ssl]# ls
ca.crt  ca.key  harbor01.io.csr  harbor01.io.key  v3.ext

2.4 使用该v3.ext文件为您的Harbor主机生成证书 harbor01.io.crt

[root@cn01 ssl]# openssl x509 -req -sha512 -days 3650 \
>     -extfile v3.ext \
>     -CA ca.crt -CAkey ca.key -CAcreateserial \
>     -in harbor01.io.csr \
>     -out harbor01.io.crt
Signature ok
subject=C = CN, ST = Beijing, L = Beijing, O = Harbor, OU = Harbor, CN = harbor01.io
Getting CA Private Key
[root@cn01 ssl]# ls
ca.crt  ca.key  ca.srl  harbor01.io.crt  harbor01.io.csr  harbor01.io.key  v3.ext
3.提供证书给docker
## 将服务器证书harbor01.io.crt和密钥harbor01.io.key复制到Harbor主机上的certficates文件夹中
[root@cn01 ssl]# mkdir /data/cert/ -p
[root@cn01 ssl]# cp harbor01.io.crt  harbor01.io.key /data/cert/
[root@cn01 ssl]# cd /data/cert/

## 将服务器证书harbor01.io.crt的编码格式转换为harbor01.io.cert,提供Docker使用
[root@cn01 cert]# openssl x509 -inform PEM -in harbor01.io.crt -out harbor01.io.cert
[root@cn01 cert]# ls
harbor01.io.cert  harbor01.io.crt  harbor01.io.key

## 将服务器证书,密钥和CA文件复制到Harbor主机上的Docker certificate文件夹中
[root@cn01 cert]# mkdir -p /etc/docker/certs.d/harbor01.io
[root@cn01 cert]# cp harbor01.io.cert harbor01.io.key /etc/docker/certs.d/harbor01.io/
[root@cn01 cert]# cp /export/servers/ssl/ca.crt .
[root@cn01 cert]# cp ca.crt /etc/docker/certs.d/harbor01.io/
[root@cn01 cert]# ls /etc/docker/certs.d/harbor01.io/
ca.crt  harbor01.io.cert  harbor01.io.key

# 重启docker
systemctl restart docker
[root@cn01 cert]# tree /etc/docker/certs.d/
/etc/docker/certs.d/
└── harbor01.io
    ├── ca.crt
    ├── harbor01.io.cert
    └── harbor01.io.key
4.提供证书给harbor

cd /opt/harbor,修改harbor.yml文件,指定证书给harbor

重启harbor:

docker-compose down

docker-compose up

测试docker login是否可以

docker login harbor01.io,结果还是不行,进行下面第8步操作

5.问题:docker push/login报443端口错误

修改daemon.json文件

[root@cn03 image]# vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://oelq8zt4.mirror.aliyuncs.com"],
  "insecure-registries": [ "http://harbor01.io" ]
}
#重启docker
systemctl daemon-reload
systemctl restart docker

#测试docker login
[root@cn01 harbor]# docker login harbor01.io    
Authenticating with existing credentials...
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.附命令

日志查看:docker logs -f harbor-log

容器查看:docker ps -a

harbor常用指令:
docker-compose start ## 启动 Harbor
docker-compose stop ## 停止 Harbor
docker-compose restart ## 重启 Harbor
docker-compose ps ## 列出容器
docker-compose create ## 创建服务
docker-compose down ## 停止并删除容器、network、images和volumes
docker-compose log ## 容器的视图输出
docker-compose up ## 创建和启动容器
​ docker-compose up -d ## 创建和启动容器(后台运行)

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值