Docker 私有仓库 harbor 搭建

news2024/9/21 16:22:51

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、实验环境

二、安装 harbor 

2.1 安装 docker 和 docker-compose

2.2 安装 harbor

2.3 登录 harbor UI 界面

三、测试上传和下载镜像

3.1 docker 常用命令

3.2 上传镜像

3.3 下载镜像


本篇文章主要介绍 Docker 私有仓库 harbor 的搭建,搭建成功后测试镜像的上传和下载。

一、实验环境

本文是在 CentOS 7.9 上进行配置,环境如下所示。

[root@k8s-master node]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[root@k8s-master imagesJar]# docker --version
Docker version 1.13.1, build 7d71120/1.13.1
[root@k8s-master imagesJar]# docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
[root@k8s-master imagesJar]#

二、安装 harbor 

2.1 安装 docker 和 docker-compose

首先,需要在服务器上安装 docker 和 docker-compose,执行如下命令。

[root@k8s-master node]# yum install docker docker-compose

2.2 安装 harbor

在服务器上执行如下命令,下载 harbor 软件包。

[root@k8s-master node]# wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz

下载比较慢,可以通过迅雷下载。

解压下载的压缩包,执行命令如下。

[root@k8s-master harbor]# tar zxvf harbor-offline-installer-v1.5.3.tgz

执行命令拷贝解压后的目录到 /opt 目录下,执行命令如下所示。 

[root@k8s-master harbor]# mv harbor /opt

 进入到 /opt/harbor 目录下,修改文件 harbor.cfg,修改如下字段。

hostname = 192.168.231.152  # 修改 IP 地址为本机 IP

 执行如下命令,安装 harbor。

[root@k8s-master harbor]# ./prepare
[root@k8s-master harbor]# ./install.sh

问题 1:

[node@k8s-master harbor]$ sudo ./install.sh
➜ Please set hostname and other necessary attributes in harbor.cfg first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.
Please set --with-notary if needs enable Notary in Harbor, and set ui_url_protocol/ssl_cert/ssl_cert_key in harbor.cfg bacause notary must run under https.
Please set --with-clair if needs enable Clair in Harbor
[node@k8s-master harbor]$ 

解决方法:在 harbor.cfg 配置文件中仅保留一个 hostname 字段。:

问题 2:

执行 install.sh 脚本的时候如下报错如下。

ERROR: for nginx  Cannot start service proxy: b'driver failed programming external connectivity on endpoint nginx (b08a457eb0d19583b0d42a53137a3e8d3a0bc89813b1def8afef7df1d85e1411): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use'

ERROR: for proxy  Cannot start service proxy: b'driver failed programming external connectivity on endpoint nginx (b08a457eb0d19583b0d42a53137a3e8d3a0bc89813b1def8afef7df1d85e1411): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use'
ERROR: Encountered errors while bringing up the project.

说明本机 80 端口占用了,可以

[node@k8s-master harbor]$ netstat -natp | grep 80

 查找到 80 端口对应的进程,通过 kill 命令停止进程。

2.3 登录 harbor UI 界面

在浏览器输入 192.168.231.152/harbor,进入 harbor UI 界面,如下所示。

用户名和密码如下所示。

用户名:admin
密码:Harbor12345
密码在 /opt/harbor/harbor.cfg 中配置,默认是 Harbor12345

 登录后界面如下所示。

三、测试上传和下载镜像

先来看下 docker 的常用命令,如果想直接看测试,移步到 2.2 上传镜像即可。

3.1 docker 常用命令

(1)docker save

将指定镜像打包成 tar,方便镜像移动。

docker save -o /root/打包名.tar 镜像名:版本号

例如:

[node@k8s-master dockerImages]$ sudo docker save -o ./demo-1.2.0.tar test/demo:1.2.0
[sudo] node 的密码:
[node@k8s-master dockerImages]$ ls
demo-1.2.0.tar
[node@k8s-master dockerImages]$

执行上述 docker save 命令会在当前目录下出现 demo-1.2.0.tar 包,将该包复制到别的机器,执行docker load 命令就完成 docker 镜像的转移了。

(2)docker load

用于载入打包好的镜像。例如:

[node@k8s-node-1 dockerImages]$ sudo docker load -i demo-1.2.0.tar
9c742cd6c7a5: Loading layer [==================================================>] 129.2 MB/129.2 MB
03127cdb479b: Loading layer [==================================================>]  11.3 MB/11.3 MB
293d5db30c9f: Loading layer [==================================================>] 19.31 MB/19.31 MB
5c384ea5f752: Loading layer [==================================================>] 12.32 MB/12.32 MB
990c5138f5d1: Loading layer [==================================================>] 3.584 kB/3.584 kB
1aaddf64804f: Loading layer [==================================================>] 108.3 MB/108.3 MB
0a8cde955e2b: Loading layer [==================================================>] 3.584 kB/3.584 kB
0931afb63541: Loading layer [==================================================>]  16.5 MB/16.5 MB
Loaded image: test/demo:1.2.0
[node@k8s-node-1 dockerImages]$ sudo docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
test/demo                                             1.2.0               fff004fa39a7        11 hours ago        290 MB
docker.io/nginx                                       alpine              4937520ae206        3 weeks ago         41.4 MB
docker.io/nginx                                       latest              eb4a57159180        3 weeks ago         187 MB
registry.access.redhat.com/rhel7/pod-infrastructure   latest              99965fb98423        5 years ago         209 MB
[node@k8s-node-1 dockerImages]$

(3)docker tag

用于给镜像打标签,语法格式如下所示。

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

(4)docker push

将本地的镜像上传到镜像仓库,要先登陆到镜像仓库。语法格式如下所示。

docker push [OPTIONS] NAME[:TAG]

3.2 上传镜像

(1)登录 Harbor

首先,需要修改配置,修改 /etc/docker/daemon.json 文件,添加如下内容。

{
    "insecure-registries": ["192.168.231.152"]
}

其中,IP 是 Harbor 仓库 IP。然后执行如下命令,重启服务。

[root@k8s-master harbor]# systemctl daemon-reload
[root@k8s-master harbor]# systemctl restart docker

然后,需要在本地的服务器(Linux 机器)上登录,执行如下命令登录。

[root@k8s-master harbor]# docker login 192.168.231.152

 其中,IP 是 Harbor 仓库的 IP,然后输入用户名和密码(这里默认用户名:admin,密码:Harbor12345)。 

登录如果有问题,可以执行如下命令尝试,或者重启机器。

docker-compose down -v
# 需要在 harbor 解压包的目录下执行
docker-compose up -d

(2)登录 Harbor UI 界面

登录 Harbor UI 界面后,点击 项目 -> library -> 推送镜像,如下所示。

 可以看到两条命令,第一个命令就是推送到 library 项目下的镜像需要打 TAG 的命令,第二条命令是推送到 library 项目下镜像的推送命令。

(3)上传镜像

执行 docker tag 和 docker push 命令,将镜像上传到 Harbor 中,如下所示。

[root@k8s-master imagesJar]# docker tag test/demo:1.2.0 192.168.231.152/library/test:1.9.0
[root@k8s-master imagesJar]# docker push 192.168.231.152/library/test:1.9.0
The push refers to a repository [192.168.231.152/library/test]
0931afb63541: Mounted from library/demo
0a8cde955e2b: Mounted from library/demo
1aaddf64804f: Mounted from library/demo
990c5138f5d1: Mounted from library/demo
5c384ea5f752: Mounted from library/demo
293d5db30c9f: Mounted from library/demo
03127cdb479b: Mounted from library/demo
9c742cd6c7a5: Mounted from library/demo
1.9.0: digest: sha256:f864fb61dc16e5df453fcb6697418d0229871c6bb584cccdfd8662b1fd06c335 size: 2001
[root@k8s-master imagesJar]# 

在 Harbor UI 界面中可以看到对应的镜像。

3.3 下载镜像

执行如下命令拉取镜像。

[root@k8s-master imagesJar]# docker pull 192.168.231.152/library/demo:1.8.0
Trying to pull repository 192.168.231.152/library/demo ...
1.8.0: Pulling from 192.168.231.152/library/demo
Digest: sha256:f864fb61dc16e5df453fcb6697418d0229871c6bb584cccdfd8662b1fd06c335
Status: Image is up to date for 192.168.231.152/library/demo:1.8.0
[root@k8s-master imagesJar]# 

参考链接:

https://www.runoob.com/docker/docker-push-command.html

https://www.cnblogs.com/pzk7788/p/10180919.html

Harbor私有镜像仓库离线部署-harbor 2.5.3_harbor离线部署_渡渡甲的博客-CSDN博客

Harbor安装小坑Please set hostname and other necessary attributes in harbor.cfg first._please do not set --with-chartmuseum, as chartmusu_流年 Narcissus yu的博客-CSDN博客 报错:ERROR: for nginx Cannot start service proxy;for proxy Cannot start service proxy;......_这闺女长得真俊啊的博客-CSDN博客

push到harbor的注意事项_error parsing http 405 response body: invalid char_阿白,的博客-CSDN博客

https://www.cnblogs.com/anxminise/p/9764221.html


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/733308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue操作Cookie

这里用的js-cookie。 很简单,安装一下就可以使用了。 npm install js-cookie --save 使用示例: import Cookies from js-cookieexport default {name: YourComponent,methods: {setCookie() {// 设置一个名为 name 的cookie,值为 value&a…

聚焦信息技术发展,博睿数据受邀出席产业链供需对接深度行北京站活动

7月6日,以“广聚群链 湾区启航”为主题的产业链供需对接深度行北京站活动圆满落幕。本次活动吸引了来自北京和广东的多家知名企业参与,博睿数据受邀出席了本次活动,同时携核心产品一体化智能可观测平台Bonree ONE参展,展示博睿数据…

Nginx配置springboot+vue项目http跳转https

java生成证书 添加依赖 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcpkix-jdk15on</artifactId><version>1.69</version></dependency> import org.bouncycastle.asn1.ASN1Encodable; import org.bounc…

易微联2.4G通断器添加到手机步骤

蓝牙款无WIFI&#xff0c;按住通断器上的按钮&#xff0c;会先闪一下&#xff0c;再闪两下。闪一下的时候连手机&#xff0c;闪两下清码。 手机上打开易微联app&#xff0c;依次点击加号/轻智能遥控器/单按键遥控器/添加完成。 返回打开刚才添加的开关&#xff0c;在通断器闪…

基于Spring Boot的医院信息管理系统设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的医院信息管理系统设计与实现 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 后端&#xff1a;Java springboot框架 mybatis 数据库&#xff1a;mysql5.7 开发工具:IDEA…

Apollo星火计划城市交通大赛600分,断头路,特殊车辆绕行,借道绕行

现在解决了前六题&#xff0c;可以拿到600分&#xff0c;有兴趣一起讨论的可以私聊我交流一下。

Linux命令(41)之top

Linux命令之top 1.top介绍 linux命令top是用来实时监测服务器资源的使用状况&#xff0c;包含进程、cpu、内存等等 2.top用法 top [参数] top常用参数 参数说明-d屏幕刷新时间间隔-i<time>设置刷新时间间隔-u<user>指定用户名-p<pid>指定进程号 top命令中…

Android平台GB28181设备接入技术探讨

GB/T28181技术背景 在此之前&#xff0c;我们先对协议规范做个简单了解&#xff1a;GB28181协议是一种用于视频监控系统互联互通的国际标准&#xff0c;它定义了视频监控系统中的设备间如何进行通信、交换数据和协调控制。以下是GB28181协议的一些主要内容&#xff1a; 设备互…

有哪些数据结构与算法是程序员必须要掌握的?——“数据结构与算法”

一&#xff1a;引言 作为IT程序员&#xff0c;学习算法的原因主要有以下几点&#xff1a; 提升问题解决能力&#xff1a;算法可以帮助程序员分析、优化和解决复杂问题。了解算法原理和实现方式将有助于程序员更快地找到合适的解决方案。这对于解决实际工作中的问题是非常有帮助…

基于STM32FFT(快速傅里叶变换)音频频谱显示功能实现

+ v hezkz17进数字音频系统研究开发交流答疑 一实验效果 二 设计过程 要用C语言实现STM32频谱显示功能,可以按照以下步骤进行操作: 1 确保已经安装好了适当的开发环境和工具链,例如Keil MDK或者GCC工具链。 2 创建一个新的STM32项目,并选择适合的MCU型号。 3 配置G…

es8.8 集群安装笔记

es8.8 集群安装笔记 配置集群第一步 修改配置文件 本次安装使用centos8 3节点安装&#xff1a; 192.168.182.142 192.168.182.143 192.168.182.144 官网 可以查看详细的安装&#xff0c;安装步骤比较简单 https://www.elastic.co/guide/en/elasticsearch/reference/8.8/rpm.htm…

使用gradio库的Plot模块创建交互式绘图界面

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

Mongodb-5.0.18-zip下载与安装

1.下载地址 Download MongoDB Community Server | MongoDB 2.创建一个文件夹和master.cfg的文件 说明&#xff1a;目的是让mongodb存放数据库的位置在mongodb文件里面。 2.1创建名为mongodb的文件夹 2.2master.cfg 说明&#xff1a;在mongodb5.0.18目录下创建master.cfg。 …

DeepSpeed使用体会

现在的模型越来越大&#xff0c;动辄几B甚至几百B。但是显卡显存大小根本无法支撑训练推理。例如&#xff0c;一块RTX2090的10G显存&#xff0c;光把模型加载上去&#xff0c;就会OOM&#xff0c;更别提后面的训练优化。 作为传统pytorch Dataparallel的一种替代&#xff0c;D…

Spring Cloud Alibaba 之 Nacos精讲

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

ChatGPT炒股:批量自动提取股票公告中的表格并合并数据

首先&#xff0c;在ChatGPT中输入提示词&#xff1a; 写一段Python代码&#xff1a; F盘文件夹“新三板 2023年日常性关联交易20230704”中很多个PDF文件&#xff0c;用 Tabula提取这些PDF文件中第1页中的第2个表格&#xff0c;然后保存到表格文件中&#xff0c;文件标题名和…

选读SQL经典实例笔记03_DML和元数据

1. 复制数据到另一个表 1.1. sql insert into dept_east (deptno,dname,loc)select deptno,dname,locfrom deptwhere loc in ( NEW YORK,BOSTON ) 2. 复制表定义 2.1. 复制表结构&#xff0c;而不复制数据 2.2. MySQL 2.3. PostgreSQL 2.4. Oracle 2.5. sql create ta…

递归--Fibonacci数列 I

描述 众所周知&#xff0c;Fibonacci数列是一个著名数列。它的定义是&#xff1a; 本组题目共有 5 题&#xff0c;请分别用 5 种不同的方式来完成&#xff0c;并比较这些做法的时间。 本题要求采用第一种方法&#xff1a;递归&#xff0c;且不得使用数组记忆结果。 输入描述 …

备忘录方法--Fibonacci数列 IV

描述 众所周知&#xff0c;Fibonacci数列是一个著名数列。它的定义是&#xff1a; 本题要求采用第四种方法&#xff1a;备忘录方法&#xff0c;即记忆化搜索。 具体做法是&#xff1a;用数组把曾经求出来的 Fibonacci 数列保存下来&#xff0c;以后要的时候直接取出来。 输入…

【剑指offer】5.重建二叉树(java)

文章目录 重建二叉树描述示例1示例2示例3思路完整代码 重建二叉树 描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}&#xff0c;则重建出如下…