侧边栏壁纸
博主头像
小周的个人博客 博主等级

行动起来,活在当下

  • 累计撰写 19 篇文章
  • 累计创建 9 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

容器镜像仓库Harbor

Administrator
2024-06-04 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

Harbor仓库概述

Docker官方提供了Registry镜像仓库,但是Registry的功能相对简陋。Harbor是VMware公司提供的一款镜像仓库,提供了权限控制、分布式发布、强大的安全扫描与审查机制等功能

Harbor 私有仓库,它以 Registry 为基础,提供了对用户友好的管理界面,可以帮助我们快速搭建一个企业级的 Docker Registry 服务。

Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 Docker Compose 进行部署。

Harbor优势

  • 基于角色控制:有管理员与普通用户,可赋权普通⽤户,比如只能上传和下载,可根据项⽬来进⾏操作和管理。

  • 基于镜像的复制策略:也与权限相关,比如有只⼀些⽤户与组才能对此项⽬进⾏相对应的操作。

  • ⽀持LDAP/AD域控制:比如南京去下载北京harbor私有仓库的镜像,两端打上局域网的地址,连接在一块,数据信息的传输通过⼀条隧道,会通过两层加密,第⼀层为隧道加密,第⼆层为数据加密,安全可靠。

  • 图像删除和垃圾收集:即回收站机制。

  • 图形UI:具有统计功能,比如访问量与镜像下载热度。

Harbor环境准备

主机名

IP地址

系统版本

硬件配置

harbor

192.168.0.17

CentOS 7.6

2C/4G

安装 docker

使用阿里云开源软件镜像站。
# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
​
​
安装docker-ce
# yum -y install docker-ce
# systemctl enable --now docker

安装 docker compose

harbor通过docker-compose进行管理,需要提前下载docker-compose二进制文件
# wget https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64

移动二进制文件到/usr/bin目录,并更名为docker-compose
# mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

为二进制文件添加可执行权限
# chmod +x /usr/bin/docker-compose

安装完成后,查看docker-compse版本
# docker-compose version

安装 harbor仓库

Harbor的软件包在GitHub仓库中,可按照下面流程下载


下载harbor离线安装包
# wget https://github.com/goharbor/harbor/releases/download/v2.5.1/harbor-offline-installer-v2.5.1.tgz

解压harbor
# tar xf harbor-offline-installer-v2.5.1.tgz  -C /
​
​
创建配置文件
# cd harbor/
# mv harbor.yml.tmpl harbor.yml

修改配置文件中的如下内容
# vim harbor.yml
​
#上述内容省略...
​
hostname: 192.168.0.17    指定Harbor主机地址
http:                     #访问方式为http(不用修改)
  port: 80                #默认端口(不用修改)
​
https:                     注释https访问方式(需要证书才可以使用)
 port: 443                 注释端口
 
 certificate: /root/harbor/6864844_kubemsb.com.pem  注释证书文件
 private_key: /root/harbor/6864844_kubemsb.com.key  注释证书文件
 
harbor_admin_password: 12345 访问密码
​
​
#下述内容省略...

执行预备脚本
# ./prepare
​
​
执行安装脚本
# ./install.sh
...
​
✔ ----Harbor has been installed and started successfully.----
​
​
​
验证运行情况
# docker ps

访问harbor UI界面:192.168.0.17

默认的用户名:admin,密码是前边配置文件中设置的密码:12345

创建一个image仓库用于存储镜像:点击【新建项目】

1656214473759
1656214597236
1656214626486

提示:以下操作需要在集群所有节点指定harbor仓库地址

harbor主机修改后直接将修改后的文件拷贝到所有节点即可
​
[root@harbor harbor]# vim /etc/docker/daemon.json
​
{                           
  "insecure-registries": ["http://192.168.0.17"]            
}
​
​
​
​
停止harbor后重启docker
[root@harbor harbor]# docker-compose down    
[root@harbor harbor]# systemctl daemon-reload && systemctl restart docker
​
​
启动harbor
[root@harbor harbor]# docker-compose up -d

拷贝文件到集群所有节点
[root@harbor harbor]# for i in 10 11 12 13 14 
do
 scp /etc/docker/daemon.json 192.168.0.$i:/etc/docker/daemon.json
done

所有节点重启docker
[root@harbor harbor]# for i in 10 11 12 13 14
do
 ssh 192.168.0.$i systemctl daemon-reload && systemctl restart docker
done

镜像上传到Harbor仓库

下载常用镜像(nginx等)镜像并上传到harbor仓库
[root@harbor harbor]# docker pull nginx:1.20.0
[root@harbor harbor]# docker images
​
​
登录到harbor仓库上传镜像
[root@harbor harbor]# docker login 192.168.0.17
Username: admin
Password:       这里密码是12345                  
​
​
修改镜像标签
[root@harbor harbor]# docker tag nginx:1.20.0 192.168.0.17/image/nginx:1.20.0
​
​
上传镜像
[root@harbor harbor]# docker push 192.168.0.17/image/nginx:1.20.0
​

仓库验证

1656216011460

K8s集群使用Harbor仓库

创建一个给 Docker registry 使用的 secret

k8s中的secrets用于存储和管理一些敏感数据,比如密码,token,密钥等敏感信息。它把 Pod 想要访问的加密数据存放到 Etcd 中。然后用户就可以通过在 Pod 中表明具体的方式访问到这些 Secret 里保存的信息了。

[root@master01 ~]## kubectl create secret --help
​
[root@master01 ~]# kubectl create secret docker-registry   docker-harbor  --docker-server=192.168.0.17 --docker-username=admin --docker-password=12345 --namespace=test  -o yaml > docker-harbor.yaml
​
说明: 
 kubectl create secret  #创建命令
 docker-registry        #资源类型
 docker-harbor          #名称(自定义)
 --docker-server        #指定harbor仓库的IP
 --docker-username      #指定harbor仓库的登录用户名
 --docker-password      #指定harbor仓库的登录密码
 --namespace=test       #指定命名空间

提示:这个secret只针对于test命名空间生效,其他命名空间的Pod无法使用该secret拉取镜像,如果其他命名空间需要使用secret,需在指定的空间再次创建。

验证查看

[root@master01 ~]# kubectl get secret -n test |grep docker-harbor
[root@master01 ~]# kubectl describe secret docker-harbor -n test

创建pod并使用secret

[root@master01 ~]# vim nginx.yml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: test
spec:
  imagePullSecrets:      #定义镜像下载使用的secrets
  - name: docker-harbor  #secret名称,与上边创建名称保持一致
  containers:
  - name: nginx
    image: 192.168.0.17/image/nginx:1.20.0  #镜像
​
​
创建Pod
[root@master01 ~]# kubectl create -f nginx.yml

验证pod 镜像下载地址

[root@master01 ~]# kubectl describe pod -n test

Harbor使用注意事项

当docker重启后,harbor服务需要先关闭在进行重启才可以正常使用

关闭harbor方式(进入到harbor路径)
[root@harbor harbor]# docker-compose down
​
​
启动harbor
[root@harbor harbor]# docker-compose up -d
​
​
查看harbor容器,总共有九个容器
[root@harbor harbor]# docker ps
harbor-jobservice
nginx
harbor-core
registryctl
registry
harbor-portal
harbor-db
redis
harbor-log


0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区