基于 harbor 构建docker私有堆栈

[复制链接]
发表于 2025-10-18 09:32:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
堆栈(Repository)是会合存放镜像的地方,又分公共堆栈和私有堆栈。
偶然间轻易把堆栈与注册服务器(Registry)肴杂。 实际上注册服务器是存放堆栈的详细服务器, 一个注册服务器上可以有多个堆栈,而每个堆栈下面可以有多个镜像。 从这方面 来说,堆栈可以被以为是一个详细的项目或目次。 比方对于堆栈地点private-docker.com/ubuntu来说, private-docker.com 是注册服务器地点, ubuntu 是堆栈名。
1. 什么是Docker私有堆栈

Docker私有堆栈是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的堆栈Docker Hub,而与Docker Hub差别,私有堆栈是受限访问的,只有授权用户才可以大概上传、下载和管理此中的镜像。这种私有堆栈可以摆设在当地云环境中,用于构造内部开辟、测试和生产环境中的容器镜像管理。包管数据安全性。
2. Docker有哪些私有堆栈

以下是一些常见的Docker私有堆栈:


  • Harbor:作为一个企业级的Docker Registry服务,Harbor提供了安全、可信任的镜像存储和管理功能。它支持RBAC权限控制、镜像复制、镜像署名、毛病扫描等功能。
  • Docker Trusted Registry (DTR):由Docker官方推出的企业级Docker私有堆栈服务,与Docker Engine紧麋集成,支持高度的安全性和可靠性。
  • Portus:一个开源的Docker镜像管理和认证服务,提供用户管理、团队管理、镜像考核等功能,与Docker Registry兼容。
  • Nexus Repository Manager:固然重要是用于构建和管理Java组件,但也可以用作Docker私有堆栈。它具有强盛的存储管理和权限控制功能。
  • GitLab Container Registry:GitLab集成了容器注册表功能,允许您存储、管理和分发Docker镜像。这是GitLab自带的功能,无需额外摆设。
  • AWS Elastic Container Registry (ECR):假如利用AWS云服务,可以思量利用AWS ECR作为私有堆栈。它与AWS的其他服务集成精密,对AWS用户来说是一个方便的选择。
本篇利用Harbor搭建Docker私有堆栈。
3. Harbor简介

Harbor是一个开源的企业级Docker Registry服务,它提供了一个安全、可信任的堆栈来存储和管理Docker镜像。Harbor翻译为中文名称为"保护;居住;"。可以明白为是Docker镜像的"居住环境"大概是镜像的"保护所"。Harbor最初由VMware公司开辟,旨在办理企业级Docker镜像管理的安全和可信托性题目。VMware于2016年发布,在2017年,VMware将Harbor开源,这使得更广泛的社区和构造可以自由地利用和贡献代码。Harbor是一个成熟、功能丰富且安全可靠的企业级Docker Registry服务,为企业容器化应用的摆设和管理提供了强盛的支持。
Harbor官网地点:Harbor (goharbor.io)
Github开源地点:GitHub - goharbor/harbor: An open source trusted cloud native registry project that stores, signs, and scans content.
4. Harbor和docker下载

4.1 添加docker添加软件源信息

  1. yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码
4.2 下载docker及其插件

docker-ce
  1. yum install docker-ce -y
复制代码
4.3 下载 harbor 离线包

  1. wget -c https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-offline-installer-v2.12.2.tgz
复制代码
4.4 解压

解压文件
  1. tar xf harbor-offline-installer-v2.8.4.tgz -C /usr/local/
复制代码
5. 启动Harbor

5.1 修改设置文件

复制harbor.yml.tmpl 文件并重定名为harbor.yml修改此设置文件,必要设置hostname、端口、数据库暗码等。
  1. cd /usr/local/harbor/
  2. cp harbor.yml.tmpl harbor.yml #拷贝
  3. vim harbor.yml
复制代码
修改设置文件:
  1. #修改hostname的值,如果没有域名就使用本机IP地址
  2. hostname: reg.yym.com
  3. #配置启动端口号
  4. # http related config
  5. http:
  6.   # port for http, default is 80. If https enabled, this port will redirect to https port
  7.   port: 80
  8. # 如果没有申请证书,需要隐藏https
  9. #https:
  10.   # https port for harbor, default is 443
  11. #  port: 443
  12.   # The path of cert and key files for nginx
  13. #  certificate: /your/certificate/path
  14. #  private_key: /your/private/key/path
  15. #启动成功后,admin用户登录密码
  16. # Remember Change the admin password from UI after launching Harbor.
  17. harbor_admin_password: Harbor12345
复制代码

5.2 启动

设置文件修改乐成后,实行 install.sh 脚本举行安装harbor
  1. ./install.sh
复制代码

提示安装乐成。接下来就可以访问Harbor了。访问IP+端口:
http://192.168.121.160:80

访问乐成,由于Harbor是通过docker管理的,以是启动非常方便。假如首页访问乐成分析Docker私有堆栈已经摆设乐成了。
6.Harbor Web页面操纵分析

默认用户名是admin,暗码是启动时设置的暗码:Harbor12345

登录乐成进入主页面了。从体系首页可以看到体系分为三个菜单:项目、日志日志、体系管理。
6.1 项目

项目管理顾名思义就是用来管理项目的。可以为每一个开辟项目创建一个私有项目库,然后把Docker镜像存储到指定的项目中,为每个项目实现项目镜像隔离。创建项目的时间,Harbor提供了公开库(public repository)和私有库(private repository)两种范例的镜像存储空间。

通过详情信息可以看到:公开库中的镜像是对全部用户可见和可访问的,任何人都可以检察和拉取此中的镜像。而私有库中的镜像则必要登录才气访问控制,只有被授权的用户或团队才可以大概检察、拉取和推送镜像。 可以根据必要创建干系的项目。
项目创建乐成后,可以点击进入项目。在内里可以为每个项目单独设置差别的设置信息。可以为每一个项目添加成员信息。

脚色权限分析:


  • 项目管理员(Project Administrator):拥有项目的最高权限,可以对项目举行全面管理,包罗创建和删除项目、管理项目成员和权限、设置项目属性、检察项目日志日志等。
  • 维护职员(Maintainer):类似于项目管理员,但权限稍低,通常用于帮忙管理项目,可以举行项目的部门管理操纵,如添加和删除镜像、设置镜像的复制和同步规则等。
  • 开辟者(Developer):具有对项目中镜像堆栈的读写权限,可以拉取、推送和删除镜像,以及管理部门项目设置,但不能举行项目管理操纵。
  • 访客(Guest):只具有对项目中镜像堆栈的只读权限,可以检察镜像和元数据,但无法对镜像举行修改或删除操纵。通常用于分享项目或镜像给外部团队或用户。
  • 受限访客(Restricted Guest):是一种更加受限的访客脚色,通常用于提供给外部用户或体系,具有对项目中镜像堆栈的只读权限,但大概会限定访问的部门内容或功能。
在右上角体现推送下令,可以通过提示下令举行docker镜像推送。

6.2 日志日志

日志菜单就是记任命户操纵日志信息的。

6.3 体系管理

体系管理重要用来管理Harbor用户职员信息、镜像堆栈的各种设置、权限和体系设置。
7.Docker下令利用私有堆栈

7.1 登录

起首登录私有堆栈地点:
  1. [root@open-Euler1 docker]# docker login -u admin -p Harbor12345 reg.yym.com
  2. WARNING! Using --password via the CLI is insecure. Use --password-stdin.
  3. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
  4. Configure a credential helper to remove this warning. See
  5. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  6. Login Succeeded
复制代码
会报错:
  1. [root@open-Euler1 docker]# docker login -u admin -p Harbor12345 reg.yym.com
  2. WARNING! Using --password via the CLI is insecure. Use --password-stdin.
  3. Error response from daemon: Get "https://reg.yym.com/v2/": dial tcp 192.168.121.160:443: connect: connection refused
复制代码
docker以为这个地点是不安全的,以是必要在docker保卫历程设置文件中把该地点参加安全范围。
  1. [root@open-Euler1 docker]# cat /etc/docker/daemon.json
  2. {
  3.     "insecure-registries": ["reg.yym.com"],
  4.     "registry-mirrors": [
  5.         "https://docker.m.daocloud.io",
  6.         "https://hub-mirror.c.163.com",
  7.         "https://mirror.baidubce.com",
  8.         "https://docker.nju.edu.cn"
  9.     ]
  10. }
复制代码
参加设置乐成后,再次登录。
  1. [root@open-Euler1 docker]# docker login -u admin -p Harbor12345 reg.yym.com
  2. WARNING! Using --password via the CLI is insecure. Use --password-stdin.
  3. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
  4. Configure a credential helper to remove this warning. See
  5. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  6. Login Succeeded
复制代码
通过输出发现登录乐成。认证信息存储在 ~/.docker/config.json 文件中,只要登录信息存在,登录会不停见效不必要每次推送拉取之前都登录。
7.2 推送

重新定名镜像名称
  1. [root@open-Euler1 docker]# docker tag busybox:latest reg.yym.com/library/busybox:latest
  2. [root@open-Euler1 docker]# docker images
  3. REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
  4. wordpress                     latest    458dad822ff7   3 weeks ago     701MB
  5. nginx                         latest    b52e0b094bc0   4 weeks ago     192MB
  6. busybox                       latest    31311c5853a2   5 months ago    4.27MB
  7. reg.yym.com/library/busybox   latest    31311c5853a2   5 months ago    4.27MB
  8. myubuntu                      18.04     f9a80a55f492   21 months ago   63.2MB
  9. ubuntu                        18.04     f9a80a55f492   21 months ago   63.2MB
  10. mysql                         5.6       dd3b2a5dcb48   3 years ago     303MB
复制代码
推送
  1. [root@open-Euler1 docker]# docker push reg.yym.com/library/busybox:latest
  2. The push refers to repository [reg.yym.com/library/busybox]
  3. 59654b79daad: Pushed
  4. latest: digest: sha256:0f17f65e7a050f35355941bcb375b63867827dd1ab7eb2c949730c195cf0bc25 size: 527
复制代码
检察Harbor堆栈,推送乐成。 (下载数开始为0,为1是由于我测试拉了一次)

7.3 拉取

通过另一台服务器,利用 docker pull 拉取镜像从私有堆栈拉取镜像:
  1. [root@open-Euler2 ~]# docker pull reg.yym.com/library/busybox
  2. Using default tag: latest
  3. latest: Pulling from library/busybox
  4. Digest: sha256:0f17f65e7a050f35355941bcb375b63867827dd1ab7eb2c949730c195cf0bc25
  5. Status: Image is up to date for reg.yym.com/library/busybox:latest
  6. reg.yym.com/library/busybox:latest
复制代码
拉取乐成

检察web界面下载数,发现已经更新了。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表