[基于harbor部署私有仓库] 4 推送镜像到harbor

本文介绍了如何配置Docker以推送镜像到Harbor私有仓库,包括配置`daemon.json`文件,标记镜像,登录Harbor以及推送和查看镜像的步骤。还讨论了解决`server gave HTTP response to HTTPS client`错误的方法,强调了配置中`insecure-registries`的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 场景解释

2 配置推送docker

3 推送

3.1 准备

3.2 标记镜像

3.3 登录docker(可省)

3.4 推送镜像

3.5 查看

4 参考 

5 你们可能遇到的问题

5.1 server gave HTTP response to HTTPS client 

5.1.1 可能原因1

5.1.2 可能原因2

5.1.3 解决方案


上一篇已经分享了,如何部署一个harbor服务,以及harbor平台的介绍。

这一篇介绍如何给harbor仓库推送镜像。

1 场景解释

推送往往场景是:Harbor搭建在A机器(centos系统),docker安装在B机器(centos系统),现在在B机器打包然后推送到A机器。

但是呢,本次案例里头,我是在harbor机器上演示了docker推送给harbor,跟上面场景没区别,只是上面场景是不同机器推送,我这边是同一台机器推送,但是操作流程都是一样的。

配置推送docker

假如b机器上要将镜像推送到a机器上,那么b机器上的docker需要配置镜像源,该镜像源指向a机器。

将配置文件:/etc/docker/daemon.json

配置成:

{
  "registry-mirrors": ["https://k1ktap5m.mirror.aliyuncs.com"],
  "insecure-registries": ["http://192.168.211.5:80"]
}
  1. registry-mirrors配置的是加速镜像源,
  2. insecure-registries配置就是a机器的镜像源地址,注意,不可省略http和80端口(这个端口就是harbor.yml上配置的http端口),不然就会推送失败

3 推送

3.1 准备

先拉取一个镜像下来做试验用:

docker pull nginx

3.2 标记镜像

给待推送的镜像打标记,打标记命令格式如下:

docker tag SOURCE_IMAGE[:TAG] 192.168.211.5:80/library/REPOSITORY[:TAG]

稍微解释下:

  1. SOURCE_IMAGE[:TAG]表示当前docker已存在的某个版本的镜像
  2. library表示的是harbor里头的某个项目名称,表示镜像推送给这个项目
  3. 注意,其中ip和端口都不要省(尤其在http协议里头)

比如我要推送nginx到harbor仓库,打的标记如下:

docker tag nginx:latest 192.168.211.5:80/library/nginx:latest

3.3 登录docker(可省)

执行以下命令

docker login 192.168.211.5:80

登出docker的命令:

docker logout

登录日志如下:

[root@localhost harbor]# docker login 192.168.211.5: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/#credentials-store

Login Succeeded

3.4 推送镜像

给我的harbor推送镜像的命令格式如下:

docker push 192.168.211.5:80/library/REPOSITORY[:TAG]

看命令就知道,docker push后面的其实就是打标记的时候标记。

比如我要推送上面已经打好标记的镜像,命令如下:

docker push 192.168.211.5:80/library/nginx:latest

日志如下:

[root@localhost harbor]# docker tag nginx:latest 192.168.211.5:80/library/nginx:latest
[root@localhost harbor]# docker push 192.168.211.5:80/library/nginx:latest
The push refers to repository [192.168.211.5:80/library/nginx]
fac15b2caa0c: Pushed 
f8bf5746ac5a: Pushed 
d11eedadbd34: Pushed 
797e583d8c50: Pushed 
bf9ce92e8516: Pushed 
d000633a5681: Pushed 
latest: digest: sha256:6fe11397c34b973f3c957f0da22b09b7f11a4802e1db47aef54c29e2813cc125 size: 1570

3.5 查看

镜像推送成功之后,在harbor上对应的项目里头就可以查看到推送上来的镜像如下:

点击镜像,进入到镜像详情页面

4 参考 

我安装过程参考了一些材料,同时如果你们想要部署https的推送通道的话,也可以从下面的几篇文章做点参考

k8s搭建安装 Harbor 私有镜像仓库(详细) - wangzy-Zj - 博客园一、设置主机名(可忽略) # 设置 Harbor 服务器主机名 hostnamectl set-hostname harbor.wangzy.com 二、安装docker 服务 安装 Docker 服https://www.cnblogs.com/wangzy-Zj/p/14011228.html

如何推送docker镜像到harbor_wh_computers的博客-CSDN博客1.harbor创建用户选择创建用户依次填写信息2.创建项目点击新建项目不公开可以不选点击项目选择成员,选择用户这里五个级别代表对仓库的访问权限,这里选择开发者对仓库具有pull和push的权限3.查询推送命令选择推送命令可以看到docker需要先tag镜像指定格式然后push4.推送镜像这里在另外一个服务器上测试修改本机的docker配置文件并重启docker,注意重启docker前先重新加载配置文件vim /etc/dhttps://blog.csdn.net/wh_computers/article/details/115644071

5 你们可能遇到的问题

5.1 server gave HTTP response to HTTPS client 

问题如题。

该问题出现的可能原因有多个,我这边试过两种情况会出现这个问题,这两种情况都是在daemon.json的配置项insecure-registries上

5.1.1 可能原因1

/etc/docker/daemon.json中的insecure-registries配置如下:

 "insecure-registries": ["192.168.211.5:80"]

上面这样配置出错原因是,默认如果不加协议,docker默认通过https的方式请求harbor

5.1.2 可能原因2

镜像打tag的时候格式不对

错误示范:

docker tag nginx:latest 192.168.211.5/library/nginx:latest

错误原因:如果只指定了ip,那么默认会通过https去访问harbor的443端口

正确写法:

docker tag nginx:latest 192.168.211.5:80/library/nginx:latest

上面这种写法,告诉docker访问80端口,80是http的默认端口

5.1.3 解决方案

参考:

【解决方法】Docker push 报错 server gave HTTP response to HTTPS client_风雪夜归人的博客-CSDN博客背景:Harbor搭建在A机器(centos系统),docker安装在B机器(centos系统),现在在B机器打包然后推送到A机器报错 server gave HTTP response to HTTPS client原因:因为客户端push的时候采用https协议,而registry未使用https导致的。解决办法:如果你的harbor服务器是http访问,那么修改registry为httpvim /etc/docker/daemon.json加入这一行{"insecure-regishttps://blog.csdn.net/qq_36715271/article/details/118413951下一篇我们来分享下k8s使用harbor私有镜像仓库。

要在DockerHarbor之间建立联系并推送镜像Harbor,你需要完成以下几个步骤: 1. **配置Harbor**: - 确保已经安装了Harbor并且它是可访问的。你可以通过浏览器尝试访问Harbor的UI界面,例如`https://your.harbor.domain`。 2. **登录Harbor仓库**: - 使用命令行工具`docker login`来认证到你的私有Harbor仓库。这通常需要提供用户名、密码以及Harbor服务器地址(包括端口)。例如,在终端输入以下内容进行身份验证: ```bash docker login your.harbor.domain:port ``` 输入相应的凭证信息。 3. **打标签给本地镜像以便推送Harbor**: - 对你想上传到Harbor的每个容器镜像添加特定于该仓库的新标记(tag)。格式通常是 `hostname/project/image_name:tag_version`. 示例操作如下所示: ```bash docker tag source_image:source_tag your.harbor.domain/library/destination_image:dest_tag ``` 4. **推送镜像Harbor**: - 完成上述准备之后就可以开始将已打好标签的本地镜像推送到远程仓库里去了。运行下面这条简单的指令即可做到这一点: ```bash docker push your.harbor.domain/library/destination_image:dest_tag ``` 5. **从Harbor镜像(如果有必要的话)**: - 如果想验证是否成功推送或者在未来再次部署此应用,则可以利用`docker pull`获指定版本的应用程序镜像回来使用。 6. **安全性和权限管理**: - Harbor支持基于角色的身份验证机制以保护存储在其内的资源免受未授权访问的影响;因此,请确保为用户分配适当的权限级别。 以上就是如何设置连接并在两者间传输数据的大致过程。希望这个指南能够帮助您顺利地集成这两个平台!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独行侠_阿涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值