Harbor 基本使用

下面将结合 Docker,将镜像推送到 Harbor,以及从 Harbor 拉去镜像。以下是 Harbor 基本使用的步骤:

登录 Harbor

打开浏览器,输入 Harbor 的地址(如 http://your-harbor-server:port),默认端口为 80,可以输入:http://192.168.1.4:80 访问,192.168.1.4 是 Harbor 所在服务器的 IP 地址。

使用管理员账号(默认用户名是 admin,密码是 Harbor12345,首次登录后建议修改密码)或其他已创建的用户账号登录。如下图:

19aba187421094cd4250f1447e5db15a_1727662022723-4386bfcd-5baf-4565-adf0-c25a326731d6_x-oss-process=image%2Fformat%2Cwebp.png

点击“登录”按钮登录到 Harbor,登录成功将进入到 Harbor 主页,如下图:

e23939d3a91a81d7b2a58eafb8c5fc22_1727662049428-6946e699-b855-483b-ad1f-8b1907b658c8_x-oss-process=image%2Fformat%2Cwebp.png

默认情况下,存在一个名为“library”的公开项目。

新建项目

在 Harbor 的界面中,点击 “项目” 菜单,然后点击 “新建项目” 按钮。如下图:

02692dd2656bcbd85ab1163241332855_1727664572574-60534ff9-5beb-4e09-8f59-27939d4415f3_x-oss-process=image%2Fformat%2Cwebp.png

输入项目名称、项目描述等信息,并设置项目的访问级别(公开或私有),存储数量,存储容量等限制,点击“确定”,如下图:

8fb710264a339c718efe18c0bbd34c70_1727664750777-7f54b930-013c-4f33-8f35-932318136164_x-oss-process=image%2Fformat%2Cwebp.png

新创建了一个名为“demo”的项目。

镜像管理

登录到 Harbor

在使用 docker push 命令将镜像推送到 Harbor 前,请使用 docker login 登录 Harbor,如下:

root@hxvm:~# docker login hxvm:80
Username: admin
Password: 
Error response from daemon: Get "https://hxvm:80/v2/": http: server gave HTTP response to HTTPS client

这个错误通常是因为 Docker 客户端默认使用 HTTPS 协议尝试连接到 Harbor 仓库,但 Harbor 服务端配置的是 HTTP 协议(或者 Docker 客户端被错误地配置为强制使用 HTTPS 连接到一个实际上是 HTTP 服务的 Harbor)。当这种协议不匹配时,就会出现 server gave HTTP response to HTTPS client 的错误。

解决方案:

(1)将 Harbor 配置为使用 HTTPS,推荐用于生产环境。

(2)配置 Docker 信任非安全的仓库,适用于测试环境。

编辑 /etc/docker/daemon.json 文件(如果文件不存在则创建它)。在文件中添加以下内容来允许 Docker 信任非安全(HTTP)的 Harbor 仓库:

{
  "insecure-registries": ["hxvm:80"]
}

这里的 hxvm:80 是你的 Harbor 服务的主机名和端口,你需要根据实际情况进行替换。添加完成后,保存文件并重启 Docker 服务。如下:

// 修改daemon.json
root@hxvm:~# vim /etc/docker/daemon.json

// 查看daemon.json内容
root@hxvm:~# cat /etc/docker/daemon.json 
{
    "registry-mirrors": [ "https://docker.m.daocloud.io" ],
    "insecure-registries": ["hxvm:80"]
}

// 重启docker
root@hxvm:~# systemctl restart docker

// 查看docker状态
root@hxvm:~# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2024-09-30 11:02:44 CST; 14s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 261697 (dockerd)
      Tasks: 28
...

// 注意,记得进入harbor安装目录使用 docker-compose 启动harbor
root@hxvm:~/harbor# docker-compose up -d
harbor-log is up-to-date
Starting harbor-portal ... 
Starting registry      ... 
registryctl is up-to-date
Starting harbor-portal ... done
Starting registry      ... done
Starting harbor-core   ... done
nginx is up-to-date
Starting harbor-jobservice ... done

再次登录 Harbor,如下:

root@hxvm:~# docker login hxvm:80
Username: admin
Password: 
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/#credential-stores

Login Succeeded

登录成功了。

上传镜像

在本地使用 Docker 命令对镜像进行标记,命令格式:docker tag your-image your-harbor-server:port/your-project/your-image:tag。例如:

// 查看本机拥有的镜像
root@hxvm:~# docker images | grep springcloud
springcloud-user                latest      188b0acb32a9   10 days ago    380MB
springcloud-products            latest      908852fc51f6   10 days ago    380MB
springcloud-order               latest      69d6221bfca2   10 days ago    383MB
springcloud-eureka              latest      d0fa6df3821b   10 days ago    382MB
springcloud-db                  latest      e698e0b6c91c   2 weeks ago    573MB

// 给本机 springcloud_eureka 镜像打标签
root@hxvm:~# docker tag springcloud-eureka hxvm:80/demo/springcloud-eureka:v1.0

// 查看打标签后的镜像
root@hxvm:~# docker images | grep v1.0
hxvm:80/demo/springcloud-eureka   v1.0        d0fa6df3821b   10 days ago    382MB

然后使用 docker push your-harbor-server:port/your-project/your-image:tag 将镜像推送到 Harbor 仓库。例如:

// 将打了标签的 springcloud-eureka 推送到 harbor
root@hxvm:~# docker push hxvm:80/demo/springcloud-eureka:v1.0
The push refers to repository [hxvm:80/demo/springcloud-eureka]
ada109513566: Pushed 
49b59fcdef48: Pushed 
34f7184834b2: Pushed 
5836ece05bfd: Pushed 
72e830a4dff5: Pushed 
v1.0: digest: sha256:78d0b37e54e04abd76e8fc7f3c8720874a618587466c2bf953d7a17f0162b81a size: 1369

执行完上面命令后,登录到 Harbor 的 web 页面,进入 demo 项目进行查看,如下图:

df830b0d72adf8f21ca3511ee02fcea6_1727665814329-9f8fa28a-2571-4959-aba3-b79f393d7003_x-oss-process=image%2Fformat%2Cwebp.png

上图显示了刚刚推送的镜像信息。

下载镜像

在需要使用镜像的服务器上,使用 docker login your-harbor-server:port 登录到 Harbor。例如:

root@hxvm:~# docker login hxvm:80
Username: admin
Password: 
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/#credential-stores

Login Succeeded

然后使用 docker pull your-harbor-server:port/your-project/your-image:tag 拉取镜像。例如:

// 拉去  hxvm:80/demo/springcloud-eureka:v1.0 镜像
root@hxvm:~# docker pull hxvm:80/demo/springcloud-eureka:v1.0
v1.0: Pulling from demo/springcloud-eureka
Digest: sha256:78d0b37e54e04abd76e8fc7f3c8720874a618587466c2bf953d7a17f0162b81a
Status: Downloaded newer image for hxvm:80/demo/springcloud-eureka:v1.0
hxvm:80/demo/springcloud-eureka:v1.0

如果你不知道镜像的具体名称,可以登录 Harbar 的 web 页面去查看,例如:

05a6050c11e4972a50e729ce857bb8a7_1727666067309-22419bf3-f160-40b5-8f10-d390db0dd9c4_x-oss-process=image%2Fformat%2Cwebp.png

注意:Harbor 给出的 docker pull 命令存在问题,自动将端口 80 给去掉了,如果使用它给出的命令拉去镜像,将出现如下错误:

root@hxvm:~# docker pull hxvm/demo/springcloud-eureka:v1.0
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)


说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号