centos8 harbor 私有仓库搭建

前期准备

1. 一台  centos8  环境(确保已经安装好了docker 没安装的话直接yum install -y docker-ce docker-ce-cli containerd.io )
2.  harbor 离线安装包
3. docker-compose 工具

离线包下载地址

github 官网地址
如果没法科学上网导致网站打开 可以试试下面两个镜像地址。打不开多刷新几遍。然后搜索 goharbor/harbor

https://github.com.cnpmjs.org
https://hub.fastgit.org

安装步骤

安装 docker-compose

github 下载地址
wget https://hub.fastgit.org/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

创建使用所需证书和密钥(如果打算安装http 模式这一步可以跳过)

  1. 生成ca 证书私钥
    mkdir -p /data/harbor/certs
    cd /data/harbor/certs/
   openssl genrsa -out ca.key 4096
  1. 生成ca 自签名证书
openssl req -x509 -new -nodes -sha512 -days 3650 \
   -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
   -key ca.key \
    -out ca.crt

注:CN 需要填写 你要创建harbor的域名或者 宿主机的IP
3. 生成 harbor 服务端私钥

openssl genrsa -out yourdomain.com.key 4096

  1. 生成 harbor 服务端证书的证书请求(ca 证书签名需要)
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
    -key yourdomain.com.key \
    -out yourdomain.com.csr
  1. 生成 x509 v3 扩展文件 (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=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF
  1. 生成 服务端证书(用ca 证书通过证书请求和v3文件生成)
   openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in yourdomain.com.csr \
    -out yourdomain.com.crt

部署harbor

wget https://github.com/goharbor/harbor/releases/download/v2.3.3/harbor-offline-installer-v2.3.3.tgz
(如果虚机无法访问外网可以在 自己能联网的电脑上下载好后上传到安装环境上)
tar -xvf  harbor-offline-installer-v2.3.3.tgz
cd /harbor/
cp  harbor.yml.tmpl harbor.yml
根据需求适配 harbor.yml文件
vi  harbor.yml
# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: kanq.k8s.com #上面创建证书用的你配置的CN 内容可以是 域名也可以是 具体IP

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 7080  # 这个是 http 访问模式。我这里修改了默认端口如果你对端口没要求的话可以不改默认80

# https related config
https:  #这里是 https 访问模式 如果你对安全需求不高的话可以将下面几行全部注掉
  # https port for harbor, default is 443
  port: 7443  # 修改默认端口 默认443 
  # The path of cert and key files for nginx
  certificate: /data/harbor/certs/kanq.k8s.com.crt  # 第二步生成的服务端证书路径
  private_key: /data/harbor/certs/kanq.k8s.com.key  # 第二步生成的服务端密钥路径
保存后执行
  ./prepare  生成配置文件
  ./install.sh 安装harbor
   一切正常的情况下到这一部harbor 就安装好了
  网页打开  https://x.x.x.x:7443/  默认用户名和密码可以在harbor.yml 中查看,当然你也可以在安装前修改成你需要的。
  如果修改的话再修改完成后
  一定要执行
  docker-compose down -v (删除服务)
  ./prepare  (重新生成配置文件)
  docker-compose up -d  (启动服务)

在这里插入图片描述

使用harbor 镜像仓库

  1. https 模式的harbor
    docker 等镜像管理工具 认为 .crt 是ca 证书 所以我们首先需要将服务端的证书格式转化为.cert
    openssl x509 -inform PEM -in kanq.k8s.com.crt -out kanq.k8s.com.cert

a. docker

    mkdir -p /etc/docker/certs.d/kanq.k8s.com\:7443/ (如果是默认443 端口这里:7443 可以去掉)
    将上面生成的服务端的证书和密钥 考到  /etc/docker/certs.d/kanq.k8s.com\:7443/ 目录下
   	cp kanq.k8s.com.cert /etc/docker/certs.d/kanq.k8s.com\:7443/
	cp kanq.k8s.com.key /etc/docker/certs.d/kanq.k8s.com\:7443/
	cp ca.crt /etc/docker/certs.d/kanq.k8s.com\:7443/
    systemctl restart docker

b. podman

    mkdir -p /etc/containers/certs.d/kanq.k8s.com\:7443/
    cp kanq.k8s.com.cert /etc/containers/certs.d/kanq.k8s.com\:7443/
	cp kanq.k8s.com.key /etc/containers/certs.d/kanq.k8s.com\:7443/
	cp ca.crt /etc/containers/certs.d/kanq.k8s.com\:7443/
     podman 就是一个工具无需重启(他没有守护进程 跟docker具体区别请自行百度谷歌这里就不展开了)
  1. http 模式
    无需证书 所以需要修改 docker(podman)仓库配置 不做ssl 安装认证
    a. docker
    增加insecure-registries 变量
      vi /etc/docker/daemon.json
          {
  "data-root": "/var/lib/docker",
  "exec-opts": ["native.cgroupdriver=cgroupfs"],
  "insecure-registries": ["kanq.k8s.com\:7443"],
  "max-concurrent-downloads": 10,
  "live-restore": true,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "50m",
    "max-file": "1"
    },
  "storage-driver": "overlay2"
}
   systemctl restart docker

b. podman

 vi /etc/containers/registries.conf
  # Registries that do not use TLS when pulling images or uses self-signed
  # certificates.
 [registries.insecure]
 registries = ["kanq.k8s.com\:7443"]
  1. 使用
 docker(podman) login -u admin -p Harbor kanq.k8s.com:7443

成功后就可以正常的docker(podman)pull push 了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值