Docker-harbor私有仓库部署与管理

实验前准备

Harbor服务器:192.168.188.11 docker-ce、docker-compose、harbor-offline-v1.2.2
Client:192.168.188.17 docker-ce
关闭防火墙
systemctl stop firewalld
setenforce 0

部署Docker-compose服务

下载或上传Docker-compose
下载:curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
上传放在/usr/local/bin/目录下
cp /opt/docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
能看到版本没问题

在这里插入图片描述

部署Harbor服务

下载或上传harbor安装程序
下载:wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

修改配置文件

vim /usr/local/harbor/harbor.cfg
修改hostname为自己harbor服务器的IP地址(域名也行)

在这里插入图片描述


指定管理员的初始密码,默认用户名/密码是admin/Harbor12345,这里可以自定义

在这里插入图片描述


启动harbor
cd /usr/local/harbor/
为harbor启动的容器生成一些必要的文件(环境)
./prepare
pull镜像并启动容器
./install.sh
查看harbor启动镜像
cd /usr/local/harbor/
docker-compose ps

在这里插入图片描述

创建项目

浏览器访问http://192.168.188.11登录Harbor WEB UI界面,默认的管理员用户名和密码是 admin/Harbor12345
创建新项目

在这里插入图片描述


在这里插入图片描述


此时可使用Docker命令在本地通过127.0.0.1来登录和推送镜像。默认情况下Registry服务器在端口80上
登录Harbor
docker login -u admin -p Harbor12345 http://127.0.0.1
下载镜像进行测试
docker pull nginx
给镜像打标签
docker tag nginx:latest 127.0.0.1/myproject-tsh/nginx:v1
测试能不能通过新标签上传镜像
docker push 127.0.0.1/myproject-tsh/nginx:v1

在这里插入图片描述


此时在浏览器的Harbor界面的myproject-tsh目录下就可以看见这个镜像了

在这里插入图片描述

客户端测试

上面的操作都是在Harbor服务器本地完成,现在模拟客户端登录Harbor
在Client上登录
docker login -u admin -p Harbor12345 http://192.168.188.11

在这里插入图片描述


此时报错,原因Docker Registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交互时出现错误
解决办法是:在Docker server启动的时候,增加启动参数,默认使用HTTP访问

修改客户端配置

vim /usr/lib/systemd/system/docker.service

在这里插入图片描述


重启Docker
systemctl daemon-reload
systemctl restart docker
再次登录
docker login -u admin -p Harbor12345 http://192.168.10.23

在这里插入图片描述

测试

下载镜像
docker pull 192.168.188.11/myproject-tsh/nginx:v1

在这里插入图片描述


上传镜像
从library仓库下载cirros镜像
docker pull cirros
为cirros镜像打上新的标签
docker tag cirros:latest 192.168.10.23/myproject-kgc/cirros:v2
上传新镜像
docker push 192.168.10.23/myproject-kgc/cirros:v2

在这里插入图片描述


浏览器查看

在这里插入图片描述

维护管理Harbor

创建项目

在这里插入图片描述


项目如果设置为私有,则必须执行Docker login才能下载镜像

创建用户

创建用户并分配权限

在这里插入图片描述


添加项目成员

在这里插入图片描述


客户端上使用普通账户操作镜像
先把本地镜像里的cirror:v2删了方便后续测试
docker rmi 192.168.188.11/myproject-tsh/cirros:v2
如果已经登录了就先退出
docker logout 192.168.188.11
然后使用刚刚创建的账户登录
docker login -u tsh -p DzD123456 http://192.168.188.11

在这里插入图片描述


测试下载和上传
docker pull 192.168.188.11/myproject-tsh/cirror:v2
docker tag cirros:latest 192.168.188.11/myproject-tsh/cirrors:v3
docker push 192.168.188.11/myproject-tsh/cirrors:v3

查看日志

在这里插入图片描述

修改Harbor.cfg配置文件

要更改Harbor配置文件中的可选参数时,需要先停止现有的Harbor实例并更新Harbor.cfg;然后运行prepare脚本来填充配置;最后重新创建并启动Harbor的实例
在Harbor服务器上操作
cd /usr/local/harbor
docker-compose down -v
只能修改可选参数
vim harbor.cfg
修改完后再启动
./prepare
docker-compose up -d

补充

移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移
cd /usr/local/harbor
docker-compose down -v
打包数据
ls /data/registry/docker/registry/v2/repositories/myproject-kgc
cd /data/registry/docker/registry/v2/repositories/myproject-kgc
tar zcvf kgc-registry.tar.gz ./*
如需重新部署,需要移除 Harbor 服务容器全部数据

所需参数与可选参数
所需参数:这些参数需要在配置文件Harbor.cfg中设置。如果用户更新它们并运行install.sh脚本重新安装Harbor,参数将生效,具体参数如下:
●hostname:用于访问用户界面和register服务。它应该是目标机器的IP地址或完全限定的域名,例如192.168.188.11或cloud.tsh.cn。不要使用localhost或127.0.0.1为主机名
●ui_url_protocol:(http或https,默认为http)用于访问UI和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为https。
●max_job_workers:镜像复制作业线程。
●db_password:用于db_auth的MySQL数据库root用户的密码。
●customize_crt:该属性可设置为打开或关闭,默认打开。打开此属性时,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为 off。
●ssl_cert:SSL证书的路径,仅当协议设置为 https 时才应用。
●secretkey_path:用于在复制策略中加密或解密远程register密码的密钥路径
可选参数:这些参数对于更新是可选的,即用户可以将其保留为默认值,并在启动Harbor后再在Web UI上进行更新。如果进入Harbor.cfg,只会在第一次启动Harbor时生效,随后对这些参数的更新,Harbor.cfg将被忽略,如果选择启动harbor后再在Web上更改,请在第一时间修改,具体参数如下:
●Email:Harbor需要该参数才能向用户发送“密码重置”电子邮件,并且只有在需要该功能时才启用。请注意,在默认情况下SSL连接时没有启用。如果SMTP服务器需要SSL,但不支持STARTTLS,那么应该通过设置启用SSL email_ssl = TRUE。
●harbor_admin_password:管理员的初始密码,只在Harbor第一次启动时生效。之后, 此设置将被忽略,并且应在UI中设置管理员的密码。请注意,默认的用户名/密码是admin/Harbor12345。
●auth_mode:使用的认证类型,默认情况下,它是db_auth,即凭据存储在数据库中。对于LDAP身份验证,请将其设置为ldap_auth。
●self_registration:启用/禁用用户注册功能。禁用时,新用户只能由Admin用户创建,只有管理员用户可以在Harbor中创建新用户。注意:当auth_mode设置为ldap_auth时,自注册功能将始终处于禁用状态,并且该标志被忽略。
●Token_expiration:由令牌服务创建的令牌的到期时间(分钟),默认为30分钟。
●project_creation_restriction:用于控制哪些用户有权创建项目的标志。默认情况下,每个人都可以创建一个项目。如果将其值设置为“adminonly”,那么只有admin可以创建项目。
●verify_remote_cert:打开或关闭,默认打开。此标志决定了当Harbor与远程register实例通信时是否验证SSL/TLS证书。 将此属性设置为off将绕过SSL/TLS验证,这在远程实例具有自签名或不可信证书时经常使用。

原文地址:https://blog.csdn.net/qq_53772682/article/details/135678617

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


最近一直在开发Apworks框架的案例代码,同时也在一起修复Apworks框架中的Bug和一些设计上的不足。遇到的一个普遍问题是,代码的调试过程需要依赖很多外部系统,比如MongoDB、PostgreSQL、RabbitMQ等。当然可以在本机逐一安装这些服务,然后对服务进行配置,使其满足自己开发调试
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-compose中加入了MS SQL Server的服务。其实在Docker中运行SQL Server是非常容
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,我快速介绍了Kubernetes中分布式存储Rook-Ceph的部署过程,这里介绍如何在部署于Kubernetes的ASP.NET Core MVC的应用程序中使用Rook-Ceph所创建的存储对象。 构建ASP.NET C
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也抽空多了解了一些。项目主要基于Rook-Ceph运行,考虑到Rook-Ceph部署也不那么简单,官方文档的步骤起点也不算低,因此,在整合官方文档的某些步骤的基础上,写篇文章简单总结一下。 Rook-Ceph是Kubernetes中分布
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
构建镜像最具挑战性的一点是使镜像大小尽可能的小。Dockerfile中的每条指令都为图像添加了一个图层,您需要记住在移动到下一层之前清理任何不需要的工件。对于多阶段构建,您可以在Dockerfile中使用多个FROM语句。每个FROM指令可以使用不同的基础,并且每个指令都开始一个新的构建。您可以选择
本文介绍compose配置文件参数的使用,熟练编写compose文件 [root@docker lnmp]# cat lnmp.yaml version: '3' services: nginx: build: /root/docker_demo/nginx/ ports: - &q
环境 docker-machine主机:192.168.1.9 docker主机:192.168.1.10 步骤: 安装docker-machine 创建ssh密钥对,实现两主机无密登录 创建docker主机,命名host1 变更docker环境变量 运行容器查看两端是否同步 镜像容器同步测试成功
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
https://blog.csdn.net/wanglei_storage/article/details/77508620 实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行。然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容
1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题。 2. Why Need Nginx .NET Core中默认的Web Server为Kestrel。 Kestrel is grea
docker rm `docker ps -a | grep Exited | awk '{print $1}'` 删除异常停止的docker容器 docker rmi -f `docker images | grep '<none>' | awk &#3
什么是Docker Compose 在微服务盛行的今天,我们通常是这么定义Compose的:对容器的统一启动和关闭的编排工具。 但是我以前还是有个疑惑,谁会用Compose在一台服务器上部署多个服务呢?干脆直接用单体服务就行了!直到我遇到了以下的一个需求,让我明白了在一台服务器上不得不用多个服务的时
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose CentOS下Docker与.netcore(四)之 三剑客之一D
很多时候,我们在本地开发过程中程序运行很正常,但是发布到线上之后由于环境的原因,可能会有一些异常。通常我们会通过日志来分析问题,除了日志还有一种常用的调试手段就是:附加进程。 VS中的附加进程非常强大,目前提供了9种常用的附加方式。 在当前.Net Core支持跨平台的大背景下,其中Linux环境和
https://www.cnblogs.com/bigberg/p/8867326.html 一、简介 Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编排在一起,同时管理。同样在Swarm集群中,可以使用docker stack 将一组相关联的服务进行
.Net6中想实现对某个网址截屏,可通过Selenium模拟访问网址并实现截图。 实现 安装Nuget包 <PackageReference Include="Selenium.Chrome.WebDriver" Version="85.0.0" /&g
原文 https://www.cnblogs.com/gispathfinder/p/5871043.html 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定。 co