1 Harbor安装

参考文章:
银河麒麟v10离线安装harbor

由于配置了本地私有yum源,因此,直接使用yum命令安装docker和docker-compose

1.1 安装docker

yum install docker-ce

1.2 安装docker-compose

yum install docker-compose

1.3 安装harbor

下载安装文件harbor-1.10.2-1.p02.ky10.aarch64.rpm
将文件上传到服务器的/root路径下

使用yum本地安装

yum localinstall -y harbor-1.10.2-1.p02.ky10.aarch64.rpm

修改配置文件/root/harbor/harbor.yml

vim /root/harbor/harbor.yml

在这里插入图片描述

配置Harbor

./prepare

安装Harbor

./install.sh

2 Harbor的使用

2.1 Harbor镜像仓库信息

http://192.168.16.106:5000/
用户名:xxxx
密码:xxxxxxxx

2.2 创建项目

在浏览器访问Harbor的管理界面:192.168.16.106:5000
登录
在项目菜单中点击新建项目按钮,新建项目。访问级别设置为公开,不用登录用户名密码即可拉取和推送镜像

在这里插入图片描述

2.3 docker配置使用harbor私用镜像仓库

在某个局域网服务器使用harbor私有镜像仓库上传或者拉取镜像,需要先登录harbor,会自动存储配置文件到系统文件。

docker login -u test -p Test123456 http://192.168.16.106:5000

会报错Error response from daemon: Get "https://192.168.16.106:5000/v2/": http: server gave HTTP response to HTTPS client

在这里插入图片描述

因为我们的私有镜像仓库是使用http请求,而docker引擎默认使用https与镜像仓库交互,需要修改docker的配置文件,增加insecure-registries配置

编辑/etc/docker/daemon.json文件

vim /etc/docker/daemon.json

增加如下配置

{
  "insecure-registries":["http://192.168.16.106:5000"]
}

重新加载配置,重启到docker服务

systemctl daemon-reload && systemctl restart docker.service

此时即可正常登录使用

在这里插入图片描述

2.3 上传镜像到私有仓库

给镜像打标签

在公网服务器pull镜像,给镜像打私有镜像仓库的标签,上文我们给harbor中创建的项目名为test,因此下面例子均以test为例

docker tag SOURCE_IMAGE[:TAG] 192.168.16.106:5000/PROJECT_NAME/IMAGE[:TAG]

例如:

docker tag openjdk:8 192.168.16.106:5000/test/openjdk:8-arm64

上传镜像

docker push 192.168.16.106:5000/PROJECT_NAME/IMAGE[:TAG]

例如:

docker push 192.168.16.106:5000/test/openjdk:8-arm64

2.4 拉取镜像

在内网的所有服务器上可以拉取镜像

docker pull 192.168.16.106:5000/test/kuboard-spray:1.2.4-arm64

在这里插入图片描述

3 在k8s集群中使用

3.1 containerd配置http的私有仓库

由于k8s在1.24以后得版本中不在支持docker作为容器引擎,而是使用containerd,因此在集群的各个节点服务器上使用harbor私有仓库,配置与docker不同。

containerd 不能像docker一样 docker login harbor.example.com 登录到镜像仓库
containerd不像docker,在/etc/docker/deamon.json文件配置一下insecure-registries就可以使用了

修改containerd 的配置文件/etc/containerd/config.toml

vim /etc/containerd/config.toml
  • 增加`registry.configs``,设置跳过安全认证设为true,设置登录用户名和密码
  • registry.mirrors配置中增加私有镜像仓库的http地址http://192.168.16.106:5000
    [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.configs]
        [plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.16.106:5000".tls]
          insecure_skip_verify = true #跳过安全认证设为true
        [plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.16.106:5000".auth]
          # 设置登录用户名和密码
          username = "xxxx"
          password = "xxxxxxxx"
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint = ["https://registry-1.docker.io"]
        # 增加harbor私有镜像仓库的http地址
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.16.106:5000"]
          endpoint = ["http://192.168.16.106:5000"]


重新加载配置,使配置生效并重启Containerd

systemctl daemon-reload && systemctl restart containerd.service

此时,K8S集群各个节点即可正常从私有镜像仓库拉取镜像。

GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:2 个月前 )
9e55afbb pull image from registry.goharbor.io instead of dockerhub Update testcase to support Docker Image Can Be Pulled With Credential Change gitlab project name when user changed. Update permissions count and permission count total Change webhook_endpoint_ui Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 7 天前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 7 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐