Harbor安装

一、准备工作

1、设置主机名并配置hosts解析

hostnamectl set-hostname harbor1.dev
hostnamectl set-hostname harbor2.dev

vi /etc/hosts
192.168.17.15 harbor1.dev
192.168.17.16 harbor2.dev

2、时间同步

# 启动chronyd服务
systemctl start chronyd
systemctl enable chronyd
date

二、生成证书

# 创建证书目录
mkdir -p /app/harbor/cert && cd /app/harbor/cert

# 生成ca证书私钥ca.key
openssl genrsa -out ca.key 4096
 
# 生成ca证书ca.crt
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=linux.io" \
 -key ca.key \
 -out ca.crt

# 生成服务器证书
## 生成服务器证书私钥
openssl genrsa -out harbor-server.key 4096
 
## 生成服务器证书
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=linux.io" \
-key harbor-server.key \
-out harbor-server.csr

## 生成 x509 v3 扩展名文件
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=linux.io
DNS.2=harbor1.dev
DNS.3=harbor2.dev
EOF

## 使用v3.ext生成服务器证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor-server.csr \
-out harbor-server.crt
    
#删除证书请求文件 
rm -f harbor-server.csr	

然后将证书拷贝到每个harbor-server

cd  /app/harbor/cert/
scp *  root@192.168.17.15:/app/harbor/cert/
scp *  root@192.168.17.16:/app/harbor/cert/

三、安装docker

https://download.docker.com/linux/static/stable/x86_64/

四、安装docker-compuse

https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64

注:网页下载不下来可以使用迅雷

五、harbor部署

1、下载安装包

wget https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz
tar -zxvf harbor-offline-installer-v2.11.1.tgz -C /app
cd /app
cp harbor.yml.tmpl harbor.yml

解压软件包之后有这些文件及目录:
在这里插入图片描述

修改这些地方:

vi /usr/local/harbor/harbor.yml
# 将hostname改成本机IP或域名,不要用localhost,127.0.0.1或0.0.0.0,冒号后面都有一个空格
hostname: harbor1.dev   #多个harbor服务要区分

# 将http端口改成10080,因为默认用的80端口已经被占用,http可以指定任意端口
http:
  port: 10080
# 配置https的端口,只能使用443端口,更改证书路径,证书路径为刚刚生成的https证书的实际路径
https:
  port: 10443
  certificate: /app/cert/harbor/harbor-server.crt
  private_key: /app/cert/harbor/harbor-server.key
# 修改后台管理密码
harbor_admin_password: harbor12345
# harbor的内部数据库密码
database:
  password: root123
# 修改harbor数据存储路径与日志存储路径,目录要先创建好并赋予777权限
data_volume: /data/harbor-data
# 修改日志存放路径,默认路径为/var/log/harbor
log:
  local:
    localtion: /data/harbor-log

安装harbor

./install.sh
修改harbor.yml之后需要执行
./prepare
docker-compose down
docker-compose up -d

在这里插入图片描述

在两个harbor创建相同的项目 test_item(项目名按实际情况创建即可)

在这里插入图片描述

在harbor1上配置指向harbor2的复制规则(两个harbor操作一致)

在这里插入图片描述

添加完以后要先进行测试,测试成功后点击确定

在这里插入图片描述
这里会出现连接其他仓库报错(测试一直失败)
原因:

禁止ping导致
也可能就是解析不到域名(但是我直接用了ip还是不行,也确实是修改了容器的hosts搞定的)

解决办法:

1、 查看barbor镜像中,/etc/hosts下的文件

docker ps |grep harbor-core
docker exec -it 98e654f768f3 /bin/bash
cat /etc/hosts     #查看是否有hosts解析,连接其他仓库报错一般都是容器里面没有hosts解析

2 、将本地的/etc/hosts挂载到容器中(两台都要)

# 修改docker-compose.yml挂载hosts文件
第一处:jobservice
~] vi /usr/local/harbor/docker-compose.yml
  jobservice:
    image: goharbor/harbor-jobservice:v2.10.0
    container_name: harbor-jobservice
    env_file:
      - ./common/config/jobservice/env
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    volumes:
      - /data/job_logs:/var/log/jobs:z
      - /etc/hosts:/etc/hosts:z                 #添加这行
      - type: bind
...........


第二处:core
  core:
    image: goharbor/harbor-core:v2.10.0
    container_name: harbor-core
    env_file:
      - ./common/config/core/env
    restart: always
    cap_drop:
      - ALL
    cap_add:
      - SETGID
      - SETUID
    volumes:
      - /data/ca_download/:/etc/core/ca/:z
      - /etc/hosts:/etc/hosts:z            #添加这行
      - /data/:/data/:z
      - ./common/config/core/certificates/:/etc/core/certificates/:z
..........

3 、重新加载harbor(两台都要)

docker-compose down
docker-compose up -d
docker-compose ps

# 如果执行命令报错,加上-f参数 指定一下配置文件路径或者进入harbor目录 cd /usr/local/harbor 执行
# 通常是找不到docker-compose.yml文件在哪
docker-compose ps
no configuration file provided: not found

docker-compose -f /usr/local/harbor/docker-compose.yml up -d

4、再次在页面上进行测试,成功后点击确定

在这里插入图片描述

5、然后创建复制策略(两个harbor操作一致)

在这里插入图片描述

六、测试harbor

docker客户端登录harbor仓库配置docker使用https访问harbor,将harbor的证书分发至docker(如果配置了/etc/docker/daemon.json 这步就不用做了 )
可docker客户端创建

mkdir /etc/docker/certs.d/harbor1.dev/
#把ca.crt与harbor-server.crt放到客户端
scp ca.crt /etc/docker/certs.d/harbor1.dev/ca.crt 
scp harbor-server.crt /etc/docker/certs.d/harbor1.dev/harbor-server.crt

配置docker客户端 /etc/docker/daemon.json 文件

 vi /etc/docker/daemon.json
{

  "insecure-registries": ["harbor1.dev:10443"]      

}

如果两步都不做那么就会报错

报错详细:

Error response from daemon: Get "https://harbor1.dev/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority

登录验证

[root@localhost docker]# docker login harbor1.dev:10443
Username (admin): admin
Password: 
Login Succeeded
[root@localhost docker]# docker images
REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
harbor1.dev:10443/test_item/nginx-lt                 1.0                 21bcbd28dffd        25 hours ago        108 MB
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx   latest              e4e6d42c70b3        7 years ago         108 MB

# 打标签,仓库名称要看好。
docker tag li/nginx-lt:1.0 harbor1.dev:10443/test_item/nginx-lt:1.0
# 推镜像到harbor仓库
docker push harbor1.dev:10443/test_item/nginx-lt:1.0

查看镜像是否同步到两个harbor

在这里插入图片描述

### Harbor 安装部署教程最佳实践 #### 准备工作 为了顺利安装Harbor,需先确保服务器上已正确安装Docker和Docker Compose。这一步骤至关重要,因为Harbor依赖于这两个组件来运行其服务[^2]。 #### 下载与解压Harbor软件包 访问官方页面获取最新版本的Harbor离线安装文件,并将其下载至目标主机。之后通过命令行工具对其进行解压缩操作,以便后续配置工作的开展[^1]。 #### 配置Harbor参数 进入解压后的目录找到`harbor.yml`配置文件,在这里可以设置诸如域名、对外提供服务所使用的端口号以及数据持久化所需的存储路径等基本信息。对于生产环境中推荐采用HTTPS协议保障通信安全;此时则需要准备好相应的SSL/TLS证书并按照指引完成相应部分的填写[^3]。 ```yaml # Example of harbor configuration file snippet hostname: core.harbor.domain.com http: port: 80 https: port: 443 certificate: /your/path/to/cert.pem private_key: /your/path/to/key.pem ... ``` #### 执行安装脚本 当所有的前期准备工作都已完成以后,就可以利用提供的shell脚本来启动整个平台了——只需简单地输入如下指令: ```bash ./install.sh ``` 此过程中会自动读取之前编辑好的`.yml`文档中的各项设定值,并据此创建必要的网络结构和服务实例集合。 #### 测试连接性 一旦上述流程结束,则可以通过浏览器尝试打开指定地址来进行初步的功能验证。如果一切正常的话应该能够看到默认界面提示成功搭建起私有Registry站点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值