首页 > 其他分享 >Harbor 容器镜像仓库

Harbor 容器镜像仓库

时间:2023-07-18 11:13:12浏览次数:58  
标签:容器 About compose Harbor harbor 镜像 docker root minute

Harbor仓库概述

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

Harbor 私有仓库,它以 Registry 为基础,提供了对⽤户友好的管理界面,可以帮助我们快速搭建⼀个企业级的 Docker Registry服务。Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 Docker Compose 进行部署。

Harbor优势

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

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

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

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

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

猫猫

Harbor环境准备

主机名 IP地址 系统版本 硬件配置
harbor 10.10.20.129 CentOS 8-Stream 2C/4G

安装docker

#配置阿里云docker-ce镜像源,先安装一些必要的系统工具
[root@harbor ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

#添加软件源信息
[root@harbor ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@harbor ~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

#更新缓存并安装Docker-CE
[root@harbor ~]# yum makecache
[root@harbor ~]# yum -y install docker-ce

#查看docker版本
[root@harbor ~]# docker --version
Docker version 24.0.4, build 3713ee1

安装docker-compose

harbor通过docker-compose进⾏管理,需要提前下载docker-compose⼆进制⽂件

#github下载docker-compose
[root@harbor ~]# wget https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-linux-x86_64

#移动⼆进制⽂件到/usr/bin⽬录,并更名为docker-compose
[root@harbor ~]# mv docker-compose-linux-x86_64 /usr/bin/docker-compose

#赋予docker-compose可执行权限
[root@harbor ~]# chmod +x /usr/bin/docker-compose 

#查看docker-compse版本
[root@harbor ~]# docker-compose --version
Docker Compose version v2.20.0

下载Harbor(v2.8.2)

地址:https://github.com/goharbor/harbor/releases/tag/v2.8.2

#下载harbor
[root@harbor ~]# wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz

#解压
[root@harbor ~]# tar xf harbor-offline-installer-v2.8.2.tgz -C ./

#复制一份配置文件
[root@harbor ~]# cd harbor
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml

#修改配置文件
[root@harbor harbor]# vim harbor.yml

hostname: 10.10.20.129				#指定Harbor主机地址

http:								#访问⽅式为http(不⽤修改)
  port: 80							#默认端⼝(不⽤修改)							


#https:							#注释这一行,这一行是https访问⽅式(需要证书才可以使⽤)
  #port: 443						#注释这一行

  #certificate: /your/certificate/path		#注释证书⽂件
  #private_key: /your/private/key/path		#注释证书⽂件
  
harbor_admin_password: 111111			#设置访问密码,可自行修改

启动docker,设置开机自启

[root@harbor ~]# systemctl enable --now docker

执行harbor脚本安装

#执⾏预备脚本,下载harbor所需的镜像⽂件(在harbor目录下执行)
[root@harbor ~]# cd harbor
[root@harbor harbor]# ./prepare 

#执⾏安装脚本(在harbor目录下执行)
[root@harbor harbor]# ./install.sh 

.....
✔ ----Harbor has been installed and started successfully.----	#成功即可


#验证运⾏情况
[root@harbor ~]# docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED              STATUS                        PORTS                                   NAMES
863643822bd8   goharbor/harbor-jobservice:v2.8.2    "/harbor/entrypoint.…"   About a minute ago   Up About a minute (healthy)                                           harbor-jobservice
061253b486ad   goharbor/nginx-photon:v2.8.2         "nginx -g 'daemon of…"   About a minute ago   Up About a minute (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp   nginx
bdf2a6d90820   goharbor/harbor-core:v2.8.2          "/harbor/entrypoint.…"   About a minute ago   Up About a minute (healthy)                                           harbor-core
5a3bd54f0ba1   goharbor/harbor-registryctl:v2.8.2   "/home/harbor/start.…"   About a minute ago   Up About a minute (healthy)                                           registryctl
425bb7851b1f   goharbor/registry-photon:v2.8.2      "/home/harbor/entryp…"   About a minute ago   Up About a minute (healthy)                                           registry
86df3dc32587   goharbor/redis-photon:v2.8.2         "redis-server /etc/r…"   About a minute ago   Up About a minute (healthy)                                           redis
9ff8ffd86490   goharbor/harbor-db:v2.8.2            "/docker-entrypoint.…"   About a minute ago   Up About a minute (healthy)                                           harbor-db
66a47caad0d2   goharbor/harbor-portal:v2.8.2        "nginx -g 'daemon of…"   About a minute ago   Up About a minute (healthy)                                           harbor-portal
ecf3f91416ee   goharbor/harbor-log:v2.8.2           "/bin/sh -c /usr/loc…"   About a minute ago   Up About a minute (healthy)   127.0.0.1:1514->10514/tcp               harbor-log

访问harbor UI界面:10.10.20.129

用户名:admin 密码:111111 (前面配置文件设置的密码)

image-20230718092526869

image-20230718092549661

创建⼀个image仓库⽤于存储镜像

点击【新建项⽬】,【访问级别】不勾选【公开】就是私有仓库,反之则是公有仓库,【项目配额限制】中【-1】即为不限制存储容量

image-20230718092703162

image-20230718093022947

配置指定harbor仓库地址

#顺带把镜像加速配一下,使用的是阿里的
[root@harbor ~]# vim /etc/docker/daemon.json

{		"registry-mirrors": ["https://00ry8okw.mirror.aliyuncs.com"],
        "insecure-registries": ["http://10.10.20.129"]
}


#停⽌harbor,注意要先进入harbor目录才能执行docker-compose down
[root@harbor ~]# cd harbor			
[root@harbor harbor]# docker-compose down

#保存配置
[root@harbor harbor]# systemctl daemon-reload

#重启docker
[root@harbor harbor]# systemctl restart docker

#重启harbor,同上,要在harbor目录下执行
[root@harbor harbor]# docker-compose up -d

镜像上传到Harbor仓库

#下载镜像(nginx等)镜像并上传到harbor仓库
[root@harbor ~]# docker pull nginx
[root@harbor ~]# docker images

#登录到harbor仓库上传镜像
[root@harbor ~]# docker login 10.10.20.129
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

#给nginx镜像打标签,后面跟地址,仓库名和标签名
[root@harbor ~]# docker tag nginx:latest 10.10.20.129/image/nginx:v1.0

#推送镜像到Harbor的image仓库
[root@harbor ~]# docker push 10.10.20.129/image/nginx:v1.0

镜像仓库查看

image-20230718100712015

标签:容器,About,compose,Harbor,harbor,镜像,docker,root,minute
From: https://www.cnblogs.com/skyrainmom/p/17562182.html

相关文章

  • centos7基础镜像添加nvidia依赖
    是这样的,我在用centos:7创建基础镜像并配置好环境以后,发现在容器中没有nvidia-smi命令这样:创建一个Dockerfile文件,添加如下,基础镜像根据自己的改一下FROMsegment_anything_env:202307171558LABELmaintainer"chentiao_create"RUNecho"/usr/local/nvidia/lib">>/......
  • docker 容器内java进程使用超出容器限制
    背景当您的业务是使用Java开发,且设置的JVM堆空间过小时,程序会出现系统内存不足OOM(OutofMemory)的问题。特别是在容器环境下,不合理的JVM堆参数设置会导致各种异常现象产生,例如应用堆大小还未到达设置阈值或规格限制,就因为OOM导致重启等。通过-XX:MaxRAMPercentage限制堆大小(推荐......
  • LeetCode 热题 100 之 11. 盛最多水的容器
    题目描述给定一个长度为n的整数数组 height 。有 n 条垂线,第i条线的两个端点是 (i,0) 和 (i,height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例1:输入:[1,8,6,2,5,4,8,3......
  • 容器原理之cgroup
    “以docker为代表,轻量、便携的container使得打包和发布应用非常容易。系列文章容器原理主要分析container用到的核心技术,主要包括Linuxnamespace,cgroups,overlayfs,看完这些内容,你将可以手动创建一个和container类似的环境。cgroup(controlgroup)是一个内核特性,用于限......
  • Docker 学习之路之 Docker 容器数据卷
    数据卷是是宿主机的一个目录或文件当容器中的目录和数据卷目录绑定后,对方的修改会立即同步一个数据卷可以同时被多个容器同时挂载一个容器也可以挂载多个数据卷数据卷的作用容器数据的持久化外部机器和容器数据间接通信容器之间的间接通信配置数据卷启动时配置数据......
  • linux部署docker以及常用容器部署
    linux部署docker以及常用容器部署前言本文主要教大家linux安装部署docker以及常用容器部署1.docker部署1.1.依次运⾏以下命令添加yum源代码如下yumupdateyuminstallepel-release-yyumcleanallyumlist1.2.安装并运⾏Docker。代码如下yuminstalldocker-io-ysystemct......
  • vector 容器的容量(capacity)和大小(size)之间的区别
    vector容器的容量(用capacity表示),指的是在不分配更多内存的情况下,也就是事先分配好内存大小,如果不超出容量即便有新的元素加入也不会分配内存空间;容器可以保存的最多元素个数;而vector容器的大小(用size表示),指的是它实际所包含的元素个数。对于一个vector对象来说,通过该......
  • 容器网络域名解析
    使用service的原因1.Pod的IP不是固定的。2.Pod实例之间需要负载均衡。部署Service和Deploy使用selector字段来声明这个Service只代理携带了app=hostnames标签的Pod。这个Service的80端口,代理的是Pod的9376端口。apiVersion:v1kind:Servicemetadata:name:hostnamess......
  • docker restart 多個容器
    Dockerrestart多个容器的流程为了实现Dockerrestart多个容器,我们可以按照以下步骤进行操作:步骤描述1找到需要重启的容器2停止容器3重新启动容器下面是每一步具体需要做的操作和相应的代码:步骤1:找到需要重启的容器首先,我们需要确定需要重启的容器的......
  • docker registry搭建私有镜像仓库
    目录大神实践推送到私有镜像仓示例常见问题解决开启外部2375访问registry启动用户认证docker登录镜像仓regsitry的垃圾回收dockerpull镜像大神实践https://www.cnblogs.com/gcgc/p/10489385.html推送到私有镜像仓示例1、拉取并运行registry镜像:拉取:dockerpullregistry注:......