企业级仓库harbor搭建
1、Harbor是什么?
Harbor是Vmvare中国团队开发的开源registry仓库,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务。在企业中很受欢迎,并且还是开源免费的,可接入LDAP进行认证权限管理。
Harbor主要有五大组件:
- Proxy:Harbor的registry, UI, token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。
- Registry: 负责储存Docker镜像,并处理docker push/pull 命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token 进行解密验证。
- Core services: 这是Harbor的核心功能,主要提供以下三个服务:
- UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权。
- webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。
- token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。
- Database:为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据
- Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
架构如图所示:
2、搭建Harbor
1、安装docker部分:
1)安装docker的yum源。
wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2)安装docker社区版,也就是docker-ce
yum install -y docker-ce
3)配置docker支持http协议
在/etc/docker目录下创建一个文件daomon.json文件,然后输入如下内容:
[root@chaofeng harbor]#cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["chaofeng.com"] }
第一行是下载镜像加速的作用。主要是第二行内容,配置使其支持http协议。
3)启动docker,并设置开机自启动
systemctl start docker
systemctl enable docker
2、安装docker-compose
在这里踩了个坑,Harbor对docker-compose做了个限制,必须要docker-compose的版本是1.6以上才可以使用。此外可能不同的源获取到的docker-compose的写法不太一样,比如1.6.0版本,有的写法是:docker-compose1.6.0,而有的版本是docker-compose1.16.0,那么对于后者的写法来说,在现在这个2019年,你见到的docker-compose版本基本大部分是1.23.0版本以上了,但是并不是说1.23 < 1.6版本,你认为这是docker-compose版本过低,其实并不是这样子。只是他们的写法不同罢了。实际是:1.6.0 < 2.3.0。
1)可以使用yum一键安装:
yum install -y docker-compose
2)也可以使用如下所示的方法来安装:
curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
不过对于这种方式来安装,或许你需要授权可执行权限操作
chmod +x /usr/local/bin/docker-compose
3)最后我们验证一下:
[root@chaofeng src]#docker-compose -v
docker-compose version 1.23., build 1110ad01
3、安装Harbor部分
1)下载Harbor
下载地址:https://github.com/goharbor/harbor/releases?after=v1.5.4
找到这个:
我现在下载的这个版本都是比较老的版本了,是2018年8月份的。
2)解压等操作
tar -xf harbor.v1.5.2.tar.gz -C /usr/local
3)更改配置文件
#vim harbor.cfg 将hostname更改为域名。
hostname = chaofeng.com
其他的操作保持默认即可,如果需要修改密码的可以修改一下密码。
4)(这一步不是必须做的,酌情选择。)当然你也可以安装如下所示的修改的详细一些:
# 这里建议使用https协议,免费的ssl证书在阿里云上很容易就申请到了,因为不用https协议docker那边需要修改配置如果是一两台docker修改倒也无所谓,多的时候就很麻烦了
ui_url_protocol = https
customize_crt = off
ssl_cert = /data/harbor/ssl_cert/reg.xxxxx.com.crt
ssl_cert_key = /data/harbor/ssl_cert/reg.xxxxx.com.key
# 需要注意的是docker-compose必须要安装,及本机上不能监听80,443端口
## 修改所有存储数据目录为/data/harbor,默认harbor所属的组件的数据均存储在/data目录下,很不方便,如果本机部署有其他服务的数据也存储在/data目录的话 管理会很不方便
docker-compose.yml prepare docker-compose.chartmuseum.yml
# 分别打开上述文件搜索data关键字,在每一个/data替换为/data/harbor
5)执行安装,注意,必须在harbor的目录下执行安装install.sh脚本文件。
#bash install.sh [Step ]: checking installation environment ... Note: docker version: 17.12. Note: docker-compose version: 1.18. [Step ]: loading Harbor images ...
52ef9064d2e4: Loading layer [==================================================>] .9MB/.9MB
4a6862dbadda: Loading layer [==================================================>] .25MB/.25MB
58b7d0c522b2: Loading layer [==================================================>] .4MB/.4MB
9cd4bb748634: Loading layer [==================================================>] .168kB/.168kB
c81302a14908: Loading layer [==================================================>] .56MB/.56MB
7848e9ba72a3: Loading layer [==================================================>] .39MB/.39MB
Loaded image: vmware/harbor-ui:v1.5.1
f1691b5a5198: Loading layer [==================================================>] .15MB/.15MB
a529013c99e4: Loading layer [==================================================>] .584kB/.584kB
d9b4853cff8b: Loading layer [==================================================>] .072kB/.072kB
3d305073979e: Loading layer [==================================================>] .096kB/.096kB
c9e17074f54a: Loading layer [==================================================>] .584kB/.584kB
956055840e30: Loading layer [==================================================>] .728kB/.728kB
Loaded image: vmware/harbor-log:v1.5.1
185db06a02d0: Loading layer [==================================================>] .25MB/.25MB
835213979c70: Loading layer [==================================================>] .9MB/.9MB
f74eeb41c1c9: Loading layer [==================================================>] .9MB/.9MB
Loaded image: vmware/harbor-jobservice:v1.5.1
9bd5c7468774: Loading layer [==================================================>] .25MB/.25MB
5fa6889b9a6d: Loading layer [==================================================>] .56kB/.56kB
bd3ac235b209: Loading layer [==================================================>] .56kB/.56kB
cb5d493833cc: Loading layer [==================================================>] .048kB/.048kB
557669a074de: Loading layer [==================================================>] .8MB/.8MB
f02b4f30a9ac: Loading layer [==================================================>] .8MB/.8MB
Loaded image: vmware/registry-photon:v2.6.2-v1.5.1
5d3b562db23e: Loading layer [==================================================>] .25MB/.25MB
8edca1b0e3b0: Loading layer [==================================================>] .16MB/.16MB
ce5f11ea46c0: Loading layer [==================================================>] .3MB/.3MB
93750d7ec363: Loading layer [==================================================>] .87kB/.87kB
36f81937e80d: Loading layer [==================================================>] .072kB/.072kB
37e5df92b624: Loading layer [==================================================>] .46MB/.46MB
Loaded image: vmware/notary-server-photon:v0.5.1-v1.5.1
0a2f8f90bd3a: Loading layer [==================================================>] .3MB/.3MB
41fca4deb6bf: Loading layer [==================================================>] .216kB/.216kB
f2e28262e760: Loading layer [==================================================>] .216kB/.216kB
68677196e356: Loading layer [==================================================>] .68kB/.68kB
2b006714574e: Loading layer [==================================================>] .536kB/.536kB
Loaded image: vmware/mariadb-photon:v1.5.1
a8c4992c632e: Loading layer [==================================================>] .3MB/.3MB
0f37bf842677: Loading layer [==================================================>] .75MB/.75MB
9f34c0cd38bf: Loading layer [==================================================>] .048kB/.048kB
91ca17ca7e16: Loading layer [==================================================>] .13kB/.13kB
5a7e0da65127: Loading layer [==================================================>] .8MB/.8MB
Loaded image: vmware/clair-photon:v2.0.1-v1.5.1
0e782fe069e7: Loading layer [==================================================>] .25MB/.25MB
67fc1e2f7009: Loading layer [==================================================>] .36MB/.36MB
8db2141aa82c: Loading layer [==================================================>] .36MB/.36MB
Loaded image: vmware/harbor-adminserver:v1.5.1
3f87a34f553c: Loading layer [==================================================>] .772MB/.772MB
Loaded image: vmware/nginx-photon:v1.5.1
Loaded image: vmware/photon:1.0
ad58f3ddcb1b: Loading layer [==================================================>] .95MB/.95MB
9b50f12509bf: Loading layer [==================================================>] .3MB/.3MB
2c21090fd212: Loading layer [==================================================>] .87kB/.87kB
38bec864f23e: Loading layer [==================================================>] .072kB/.072kB
6e81ea7b0fa6: Loading layer [==================================================>] .24MB/.24MB
Loaded image: vmware/notary-signer-photon:v0.5.1-v1.5.1
897a26fa09cb: Loading layer [==================================================>] .02MB/.02MB
16e3a10a21ba: Loading layer [==================================================>] .656kB/.656kB
85ecac164331: Loading layer [==================================================>] .048kB/.048kB
37a2fb188706: Loading layer [==================================================>] .68kB/.68kB
Loaded image: vmware/postgresql-photon:v1.5.1
bed9f52be1d1: Loading layer [==================================================>] .78kB/.78kB
d731f2986f6e: Loading layer [==================================================>] .56kB/.56kB
c3fde9a69f96: Loading layer [==================================================>] .072kB/.072kB
Loaded image: vmware/harbor-db:v1.5.1
7844feb13ef3: Loading layer [==================================================>] .68MB/.68MB
de0fd8aae388: Loading layer [==================================================>] .072kB/.072kB
3f79efb720fd: Loading layer [==================================================>] .9kB/.9kB
1c02f801c2e8: Loading layer [==================================================>] .95kB/.95kB
Loaded image: vmware/redis-photon:v1.5.1
454c81edbd3b: Loading layer [==================================================>] .2MB/.2MB
e99db1275091: Loading layer [==================================================>] .4MB/.4MB
051e4ee23882: Loading layer [==================================================>] .216kB/.216kB
6cca4437b6f6: Loading layer [==================================================>] .216kB/.216kB
1d48fc08c8bc: Loading layer [==================================================>] .68kB/.68kB
0419724fd942: Loading layer [==================================================>] .536kB/.536kB
543c0c1ee18d: Loading layer [==================================================>] .2MB/.2MB
4190aa7e89b8: Loading layer [==================================================>] .9kB/.9kB
Loaded image: vmware/harbor-migrator:v1.5.0 [Step ]: preparing environment ...
Generated and saved secret to file: /data/secretkey
Generated configuration file: ./common/config/nginx/nginx.conf
Generated configuration file: ./common/config/adminserver/env
Generated configuration file: ./common/config/ui/env
Generated configuration file: ./common/config/registry/config.yml
Generated configuration file: ./common/config/db/env
Generated configuration file: ./common/config/jobservice/env
Generated configuration file: ./common/config/jobservice/config.yml
Generated configuration file: ./common/config/log/logrotate.conf
Generated configuration file: ./common/config/jobservice/config.yml
Generated configuration file: ./common/config/ui/app.conf
Generated certificate, key file: ./common/config/ui/private_key.pem, cert file: ./common/config/registry/root.crt
The configuration files are ready, please use docker-compose to start the service.
Creating harbor-log ... done [Step ]: checking existing instance of Harbor ... Creating harbor-adminserver ... done
Creating harbor-ui ... done
Creating network "harbor_harbor" with the default driver
Creating nginx ... done
Creating harbor-adminserver ...
Creating registry ...
Creating harbor-db ...
Creating redis ...
Creating harbor-ui ...
Creating nginx ...
Creating harbor-jobservice ... ✔ ----Harbor has been installed and started successfully.---- Now you should be able to visit the admin portal at http://192.168.111.5.
For more details, please visit https://github.com/vmware/harbor .
至此,Harbor就算是安装成功了。
6)查看一下服务
[root@chaofeng data]#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61aed845023f vmware/harbor-jobservice:v1.5.2 "/harbor/start.sh" 3 hours ago Up 3 hours harbor-jobservice
b3e4835a56a0 vmware/nginx-photon:v1.5.2 "nginx -g 'daemon of…" 3 hours ago Up 3 hours (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp nginx
5d6dcd64148e vmware/harbor-ui:v1.5.2 "/harbor/start.sh" 3 hours ago Up 3 hours (healthy) harbor-ui
18a2c2e2350d vmware/harbor-adminserver:v1.5.2 "/harbor/start.sh" 3 hours ago Up 3 hours (healthy) harbor-adminserver
6a35ec058cd7 vmware/registry-photon:v2.6.2-v1.5.2 "/entrypoint.sh serv…" 3 hours ago Up 3 hours (healthy) 5000/tcp registry
5a87e0483fc7 vmware/harbor-db:v1.5.2 "/usr/local/bin/dock…" 3 hours ago Up 3 hours (healthy) 3306/tcp harbor-db
034a730d3070 vmware/redis-photon:v1.5.2 "docker-entrypoint.s…" 3 hours ago Up 3 hours 6379/tcp redis
10d87125e327 vmware/harbor-log:v1.5.2 "/bin/sh -c /usr/loc…" 3 hours ago Up 3 hours (healthy) 127.0.0.1:1514->10514/tcp harbor-log
7)在浏览器中访问我们的仓库。登录账号密码:admin/Harbor12345
8)创建一个普通账户
9)创建一个项目devops,然后加入上面我们创建的普通账户使其为devops项目的成员
10)接下来是设置上传镜像的REPOSITORY名字,需要点击查看如下图片的内容:
11)设置标签名字:
12)登录用户chaofeng
[root@chaofeng harbor]#docker login chaofeng.com
Username: chaofeng
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
如果这一步报错了,往下看解决方法。
13)上传镜像
[root@chaofeng harbor]#docker push chaofeng.com/devops/busybox:latest
The push refers to repository [chaofeng.com/devops/busybox]
adab5d09ba79: Layer already exists
latest: digest: sha256:4415a904b1aca178c2450fd54928ab362825e863c0ad5452fd020e92f7a6a47e size: 527
14)在harbor中查看是否上传成功
成功了。
报错总结:
1)在docker login那一步报错,比如:
[root@elk-chaofeng02 harbor]#docker login chaofeng.com
Username: admin
Password:
Error response from daemon: Get http://chaofeng.com/v2/: dial tcp: lookup chaofeng.com on 192.168.1.1:53: read udp 172.16.0.52:38799->192.168.1.1:53: i/o timeout
这是因为chaofeng.com不能正确解析IP导致的,我们可以在/etc/hosts文件中添加域名ip映射,例如:
2)如果是在push镜像的时候出错了(前提是你要确认好是真的登录成功了,显示"login succeed",你再看这个问题解决方法),如下所示:
这里的docker.io是一个docker的一个官方仓库,之所以没有上传到我们本地搭建的仓库而是自动寻找dockerhub仓库是因为我们的镜像标签没有做好导致的,URL没有做好,默认是提交到官方的docker仓库中的。我上面的elk-chaofeng02是自己把当作了域名,但是docker却不认这是域名。解决方法就是在harbor目录在的harbor.cfg文件中,将hostname修改为带有.com结尾的域名,多加几个点号就好了。或者你可以参考这个文章所说的来解决:https://blog.csdn.net/qq_39623859/article/details/79752803 。
也有可能是你要上传的那个仓库没有你的权限,那你照样上传不了。
3)如果报错:Error response from daemon: Get https:// 172.16.1.146:5000/v1/_ping: http: server gave HTTP response to HTTPS client。
这是因为docker客户端没有配置免https证书导致的。是docker客户端需要配置。
如果你安装的是docker-ce社区版,那么就在:
如果你直接就是yum一键安装的docker,那么你需要修改启动程序才行,如下:
这是不同版本的docker的不同配置模式,核心是一样的。
4)还有一个需要说明的是:一旦你修改了harbor的配置文件,那么你要使用docker-compose命令将harbor停止了,然后执行install.sh脚本文件进行安装。
5)此外,harbor默认的数据存放目录是在/data目录下,这样子导致的结果就是/data目录下的数据比较混乱,不易于管理。因为我们的/data目录多用于存放数据,最好规格一点。因此我们最好在配置文件中修改harbor存放数据的目录位置,我上面介绍的有,网上看看。
我也参考了三位博主的文章,然后自己亲身测试并做的总结:
私有仓库搭建过程小结:
,安装docker-compose
rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
yum install docker docker-compose -y systemctl start docker
systemctl enable docker ,安装harbor
# 申请ssl证书,在阿里云或腾讯云上申请免费的ssl证书并上传到服务器
# 放置/data/harbor/ssl_cert目录下
mkdir /data/harbor/ssl_cert -pv
ls /data/harbor/ssl_cert/
reg.xxxxx.com.crt reg.xxxxx.com.key # 在线安装
下载在线安装包
https://github.com/goharbor/harbor/releases
在上述链接中下载对应的版本,这里使用的是1..2版本的,可自行下载最新版的
wget https://storage.googleapis.com/harbor-releases/harbor-online-installer-v1.5.2.tgz
tar xvf harbor-online-installer-v1.5.2.tgz
cd harbor
vim harbor.cfg
hostname = reg.xxxxx.com
# 这里建议使用https协议,免费的ssl证书在阿里云上很容易就申请到了,因为不用https协议docker那边需要修改配置如果是一两台docker修改倒也无所谓,多的时候就很麻烦了
ui_url_protocol = https
customize_crt = off
ssl_cert = /data/harbor/ssl_cert/reg.xxxxx.com.crt
ssl_cert_key = /data/harbor/ssl_cert/reg.xxxxx.com.key
# 其他的参数根据需要修改
# end # 需要注意的是docker-compose必须要安装,及本机上不能监听80,443端口
## 修改所有存储数据目录为/data/harbor,默认harbor所属的组件的数据均存储在/data目录下,很不方便,如果本机部署有其他服务的数据也存储在/data目录的话 管理会很不方便
docker-compose.yml prepare docker-compose.chartmuseum.yml
# 分别打开上述文件搜索data关键字,在每一个/data替换为/data/harbor # 执行安装脚本
./install.sh
# 直到出现以下信息则表示安装成功
✔ ----Harbor has been installed and started successfully.---- Now you should be able to visit the admin portal at https://reg.xxxxx.com.
For more details, please visit https://github.com/vmware/harbor . # 测试
浏览器打开https://reg.xxxxx.com
默认用户密码为 admin/Harbor12345 # 命令行登录 registry
docker login reg.xxxxx.com
nginx反向代理harbor小结:
应用场景是这样的,假设我们的harbor所部署的主机上运行有其他的http/https协议的服务
而想要两者都兼顾则需要用到反向代理技术,让两者都能够运行在同一台主机上
harbor本身的容器中有运行nginx,修改它的nginx也不太方便,索性就再装一个nginx来做反代
先说下环境,这里的机器上此前运行了nginx用于做http,/https,443的yum仓库服务,还有apache提供的http,88端口的svn服务
所以这里如果再安装harbor就会有端口冲突,80跟443都会冲突,因为harbor默认监听主机的80跟443所以这里就介绍如何让他们共存
原环境端口监听情况如下:
nginx / 提供的yum仓库服务
apache/svn 提供的http的svn访问接口 装上harbor后的端口监听情况
nginx / 提供yum仓库服务(http/https),提供apache/svn的反代(http),提供harbor的反代(https)
apache 提供的http的svn访问接口
harbor 提供Registry的pull、push及页面管理(https)
最终目的是 http 80端口对外提供yum,svn服务 https 443端口对外提供yum,跟Registry的pull、push及页面管理 如上环境,首先需要知道的是harbor默认监听80跟443端口 这里需要修改下,由于这里我没有使用http协议提供服务,而是使用的https
所以80端口这里可以将其关闭,而443端口需要修改为8443以免跟nginx冲突 提供https服务的ssl证书建议去阿里云申请免费的ssl证书,如果用自签证书要修改docker的配置,我觉得申请个证书是一劳永逸的事情,你觉得呢? 这里只简单介绍harbor修改端口的配置
nginx反代这些自行思考 ,停止原有的nginx
,安装配置harbor(端口修改可直接在此步直接修改然后在执行./install.sh)
,配置nginx反代 # 修改harbor的端口暴露配置,因为我这里使用的https协议提供服务,80端口就不需要了,所以将其注释,如下
# 安装请参考harbor的安装
cd /usr/local/harbor
docker-compose stop
vim docker-compose.yml
# 搜索到80那行将其注释掉或修改为其他端口,如果使用的是https协议可直接将80那行注释掉
ports:
#- :
- :
- : ./install.sh 执行完成后netstat -tnlp 看看是不是只监听了8443端口,剩下的就是nginx反代了
nginx反代harbor的话 两者的ssl证书应该是一样的
这里贴下我的nginx server的配置仅供参考 server {
listen ;
server_name mirror.xxxxx.com yum.xxxxx.com mirror.centos.org;
limit_rate 50M;
charset utf8;
location / {
root /data/soft_repos/;
access_log /var/log/nginx/mirror.log main;
}
location /svn/ {
proxy_pass http://127.0.0.1:88/svn/;
access_log /var/log/nginx/svn.log main;
}
error_page /50x.html;
location = /50x.html {
root html;
}
}
server {
listen ;
server_name mirror.xxxxx.com yum.xxxxx.com mirror.centos.org;
access_log /var/log/nginx/mirror_ssl.log main;
limit_rate 50M;
charset utf8;
ssl on;
ssl_protocols TLSv1 TLSv1. TLSv1.;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_certificate /etc/nginx/.ssl/mirror.crt;
ssl_certificate_key /etc/nginx/.ssl/mirror.key;
ssl_prefer_server_ciphers on;
location / {
root /data/soft_repos/;
}
error_page /50x.html;
location = /50x.html {
root html;
}
}
server {
listen ;
server_name reg.xxxxx.com;
access_log /var/log/nginx/harbor.log main;
ssl on;
ssl_certificate /data/harbor/ssl_cert/1293901_reg.xxxxx.com.pem;
ssl_certificate_key /data/harbor/ssl_cert/1293901_reg.xxxxx.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1. TLSv1.;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://127.0.0.1:8443/;
}
}
https://blog.csdn.net/junzixing1985/article/details/80628839
https://blog.csdn.net/qq_30062125/article/details/80942998
http://www.eryajf.net/2314.html
企业级仓库harbor搭建的更多相关文章
- 企业级镜像仓库harbor搭建
企业级镜像仓库harbor搭建 一. Harbor概述 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服 ...
- docker的企业级仓库-harbor
Harbor 一.背景 Docker中要使用镜像,我们一般都会从本地.Docker Hub公共仓库或者其它第三方的公共仓库中下载镜像,但是出于安全和一些内外网的原因考虑,企业级上不会轻易使用.普通的D ...
- docker的私有化仓库harbor搭建
目前比较流行的docker私有化仓库是harbor,harbor是一个github开源的项目,直接在github上搜索即可,下载地址:https://github.com/goharbor/harbo ...
- Kubernets二进制安装(5)之私有仓库harbor搭建
在IP地址为192.168.80.50,机器名为mfyxw50上搭建私有仓库harbor harbor下载地址: harbor下载连接地址:https://github.com/goharbor/ha ...
- Docker镜像仓库Harbor搭建及配置
一.harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distribut ...
- docker实战——Docker本地私有镜像仓库Harbor搭建及配置
Harbor介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署我们私有环境内的Registr ...
- 微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像
❝ 目录: 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernet ...
- docker仓库harbor搭建
1.安装docker-compose [root@docker02 ~]# yum install epel-release [root@docker02 ~]# pip install docker ...
- docker仓库harbor搭建随笔
docker除了自己的registry仓库工具外,还有vmware出品的harbor,harbor集成了ui界面,用户级别认证,重要的是对镜像管理比较全面,可以删除镜像,下面是 简单的部署指南 首先: ...
随机推荐
- 【golang-GUI开发】struct tags系统(二)qt的自定义组件和构造函数
今天我们来讲讲自定义组件和它的构造函数. 在前面的文章里我们已经接触了好几个自定组件,这次的示例是一个自定义对话框,他有一个about按钮,点击按钮可以显示出Qt的信息或者用户输入的信息.这是效果图: ...
- 爬虫应对js混淆的方法
大家做爬虫可能经常要跟js打交道.如果积累一定的经验肯定会遇到eval(....);这种js,很多新人可能慌了,woc这怎么办??????? 下面楼主给大家介绍一种方法简单,有效. F12 在Cons ...
- oracle listener.ora文件配置
# listener.ora Network Configuration File: /oracleDB/product//db_1/network/admin/listener.ora # Gene ...
- [android] 安卓进程优先级&为什么使用服务
应用程序:一组组件(activity service provider receiver)的集合 一般情况下,一个应用程序对应一个进程 一般情况下,关闭掉应用,关闭掉所有界面,应用程序的进程还在后台运 ...
- 12.QT4.7.4-解决WIN平台和Linux平台中文乱码,QLineEdit右击菜单中文显示
1.解决Win平台中文显示 1.1首先解决win平台上中文显示乱码问题 1)首先查看qt creator的编码格式 通过->编辑->选择编码 查看. 2)如果qt creator的编码格式 ...
- 异常:getHibernateFlushMode is not valid without active transaction; nested exception is org.hibernate.HibernateException: getHibernateFlushMode is not valid without active transaction getHibernateFlu
场景: 在使用spring整合hibernate调用的HibernateTemplate时报错解决: 在spring配置文件中添加事务的配置 <bean id="hibernateTr ...
- WPF实现主题更换的简单DEMO
WPF实现主题更换的简单DEMO 实现主题更换功能主要是三个知识点: 动态资源 ( DynamicResource ) INotifyPropertyChanged 接口 界面元素与数据模型的绑定 ( ...
- JavaScript如何工作:内存管理+如何处理4个常见的内存泄漏
摘要: 作者将自己常用的JavaScript模块分享给大家. 原文:JavaScript如何工作:内存管理+如何处理4个常见的内存泄漏 作者:前端小智 Fundebug经授权转载,版权归原作者所有. ...
- canvas-8clip.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- jfinal框架学习过程
刚刚学习jfinal,通过一天左右的时间大体上理解了这个框架的用法,我对他的理解是JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功 ...