1.前期准备
工具
版本 备注
Centos
7.4 64位 最小化安装
docker
1.13.1
Harbor 1.1.2 https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
Other tools 详见具体配置
说明:
1.域名设置为docker-hub.vonechain.com

2.安装前置组件

2.1 更新系统

yum -y update && yum -y upgrade && yum -y install wget python-devel libevent-devel epel-release python-pip gcc gcc-c++ xz-devel lrzsz
yum -y upgrade kernel && yum -y reinstall kernel

2.2 安装ca-certificates包

yum install ca-certificates

#使能动态CA配置功能
update-ca-trust force-enable

3. 安装docker

yum -yinstalldocker

3.1 设置docker为开启启动

systemctlenabledocker.service

3.2 启动 docker 服务

systemctlstartdocker.service

3.3 安装 docker-compose

预先安装epel-release后方可安装python-pip[在前置条件中已安装,此处可不执行]
yum -y install epel-releasepython-pip
pipinstall--upgradepip
pipinstalldocker-compose
pipinstall--upgradebackports.ssl_match_hostname

yum clean all

python-pip其他安装方法:
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py
pip -V

4.安装harbor

4.1 下载harbor离线版

wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz

解压到指定目录,此处为~/docker/harbor tar xvf harbor-offline-installer-v1.1.2.tgz

4.2 创建证书存放目录

mkdir-p/data/cert
cd/data/cert/

4.3 配置Harbor内置Nginx,并启用ssl

进入harbor离线包存放Nginx配置目录
cd ~/docker/harbor/common/config/Nginx

备份Nginx.conf
cp Nginx.conf Nginx.conf.backup

新建https认证的Nginx配置文件Nginx.https.conf
cp Nginx.conf Nginx.https.conf

4.4 自签ssl证书

cd ~/docker/harbor/common/config/Nginx/cert

openssl genrsa -out Nginx.key 2048
openssl req -new -key Nginx.key -sha256 -out Nginx.csr
openssl x509 -req -days 3650 -in Nginx.csr -signkey Nginx.key -sha256 -out Nginx.crt

cd ~/docker/harbor

4.5 将自签的SSL证书导入系统的CA

证书认证与输出连接配置
openssl s_client -showcerts -connect docker-hub.vonechain.com:443 </dev/null 2>/dev/null | openssl x509 -outform PEM >/etc/pki/ca-trust/source/anchors/docker-hub.vonechain.com.crt

更新ca证书信任
update-ca-trust

4.6 修改habor配置

hostname=docker-hub.vonechain.com #指定私有仓库的主机名,可以是IP地址,也可以是域名
ui_url_protocol=https #用户访问私仓时使用的协议,默认时http,配置成https
db_password=root123   #指定MysqL数据库管理员密码
harbor_admin_password:Harbor12345 #harbor的管理员账户密码
ssl_cert=/data/cert/server.crt    #设置证书文件路径
ssl_cert_key=/data/cert/server.key #设置证书密钥文件路径

4.7 通过自带脚本一键安装(在harbor目录下)

[root@harborharbor]# ./prepare
[root@harborharbor]# ./install.sh
[root@harborharbor]# docker-compose up

设置harbor自启动
[root@harborharbor]# echo "~/docker/harbor/docker-compose up" >> /etc/rc.d/rc.local

4.8 通过浏览器访问管理

[提前设置本地 hosts文件本地重定向至harbor服务器IP]
vi /etc/hosts
添加
127.0.0.1 localhost docker-hub.onechain.com

重启docker服务或者直接重启服务器
systemctl restart docker.service

4.9 开启80/443端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
firewall-cmd --query-port=80/tcp
firewall-cmd --query-port=443/tcp
firewall-cmd --list-all

https://docker-hub.onechain.com
用户默认为admin
密码默认为Harbor12345 [可通过安装前 harbor.cfg 配置文件修改harbor_admin_password指定 ]

5. 客户端从docker下载证书

本地/etc/hosts [你的域名] 重定向至harbor服务器IP
vi /etc/hosts
新增
[harbor服务器IP] [你的域名]
e.g.
172.16.20.90 docker-hub.vonechain.com

5.1 创建仓库证书存放目录

sudo mkdir /etc/docker/certs.d/[你的域名]

e.g.
sudo mkdir /etc/docker/certs.d/docker-hub.vonechain.com

5.2 从harbor服务器获取证书至仓库证书目录

sudo scproot@[服务器IP]:/data/cert/ca.crt/etc/docker/certs.d/[你的域名]/ca.crt

e.g.
sudo scproot@172.16.20.90:/data/cert/ca.crt/etc/docker/certs.d/docker-hub.vonechain.com/ca.crt

5.3 登录至harbor

docker login -u admin -p 'Harbor12345' docker-hub.vonechain.com
如下图所示说明登录成功:

6.使用dockerfile制作自定义镜像

6.1 完成自定义镜像


6.2 推送自定义镜像至harbor

使用docker tag修改镜像标签
推送修改标签后的镜像


harbor上传成功结果(harbor的test用户原来已在harbor上创建,请自行动手创建)



至此,docker私有仓库基于harbor的搭建已全部完成。

FAQ

1.x509: certificate signed by unkNown authority harbor

answer:
重复步骤4.2-4.5即可完成认证,使用内置Nginx配置ssl证书认证

CentOS7.4 Docker Harbor registry基于Https方式安全认证私有仓库搭建的更多相关文章

  1. PhoneGap / iOS上的SQLite数据库 – 超过5mb可能

    我误解了什么吗?Phonegap中的sqlitedbs真的有5mb的限制吗?我正在使用Phonegap1.2和iOS5.解决方法您可以使用带有phonegap插件的原生sqliteDB,您将没有任何限制.在iOS5.1中,Websql被认为是可以随时删除的临时数据…

  2. ios – 使用带有NodeJs HTTPS的certificates.cer

    我为IOS推送通知生成了一个.cer文件,我希望将它与NodeJSHTTPS模块一起使用.我发现HTTPS模块的唯一例子是使用.pem和.sfx文件,而不是.cer:有解决方案吗解决方法.cer文件可以使用两种不同的格式进行编码:PEM和DER.如果您的文件使用PEM格式编码,您可以像使用任何其他.pem文件一样使用它(有关详细信息,请参见Node.jsdocumentation):如果您的文件使

  3. ios – CFNetwork内部错误:URLConnectionLoader.cpp:289

    当我在一段时间后打开我的应用程序时,我收到了日志:440:CFNetworkinternalerror(0xc01a:/buildroot/Library/Caches/com.apple.xbs/Sources/CFNetwork/CFNetwork-758.4.3/Loading/URLConnectionLoader.cpp:289)它从未出现在过去.我的项目使用网络库AFNetworkin

  4. ios – 使用大写符号在字符串swift中获取URL的正则表达式

    我尝试在文本中获取URL.所以,在此之前,我使用了这样一个表达式:但是当用户输入带有大写符号的URL时(例如Http://Google.com,它与它不匹配)我遇到了问题.我试过了:但什么都没发生.解决方法您可以使用正则表达式中的i内联标志关闭区分大小写,有关可用正则表达式功能的详细信息,请参阅FoundationFrameworkReference.(?ismwx-ismwx)Flagsetti

  5. ios – xcode在更新可可豆荚后出现体系结构错误的重复符号

    编辑:执行下面显示的解决方案后,我的项目只编译iPadAir,我不能再存档,我仍然得到相同的错误…

  6. ios – UIWebView中的WebSQL / SQLite数据库的最大大小(phonegap)

    我知道一般来说,Web应用程序的本地存储空间有5MB的限制.本地网页浏览应用程式是否也有这个限制?

  7. ios – 我可以使用自签名SSL证书服务器在空中部署企业应用吗?

    iOS7.1之后,如果我们要通过空中部署我们的Enterprise应用程序,则manifest.plist文件的URL必须是HTTPS.例如:在我的服务器中,我使用自签名SSL证书.当我点击iPhone上的URL时,它表示无法连接到并记录典型的所以,我想知道我是否可以使用自签名SSL证书?如果可以,我如何解决我遇到的问题的问题?

  8. ios – 如何使用YouTube API V3?

    我想知道如何在iOS应用中使用新的YouTubeAPI(第3版),但我不知道如何做.我做了很多关于它的研究,但是我发现所有的例子和老API的代码,所以它们是无效的.现在,我明白了,使用新的API你必须在Google开发者控制台中创建一个项目…使用API2很简单它…

  9. 如何在iOS Couchbase Mobile上使用HTTPS复制?

    我正在使用iOSCouchbaseMobile在iPad上使用一个couchdb服务器,它使用复制与服务器进行同步.cloudant使用HTTPS,当我尝试在iPad上复制时,我只是被错误地垃圾邮件发送.这是一个已知的问题,如thisFAQarticle所示.它建议使用1.0.2修复问题,但是如何知道我是否在ErlangR14上运行?

  10. ios – 有没有人使用UIWebView找到一种使用无效服务器证书加载HTTPS页面的方法?

    如果用户尝试在MobileSafari中加载https网页,并且服务器的证书验证检查失败(已过期,撤销,自签名等),则显示用户将显示一条警告消息,并询问他们是否要继续或不.类似地,NSURLConnection提供了实施者首先决定如何检查证书的能力,然后在失败的情况下决定如何执行,因此在这种情况下也可以向用户显示警告并为他们提供继续加载的机会页面还是不.但是,当在UIWebView中加载https

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部