Harbor 是 VMware 公司开源的企业级 Docker Registry 项目:
(1)Harbor 的优点:nginx
基于角色控制;
基于镜像的复制策略;
支持 LDAP / AD;
图像删除和垃圾收集;
图形 UI;
审计;
RESTful API;web
(2)Harbor 架构组成:
一、Proxy:经过一个前置的反向代理统一接受浏览器,Docker客户端的请求,并将请求转发给后端不一样的服务。
二、Registry:负责存储 Docker 镜像,并处理 docker push/pull 命令。
三、Core services:Harbor的核心功能,包括 UI、webhook、token 服务。
四、Database:为 core services 提供数据库服务。
五、Log collector:负责收集其余组件的 log,供往后进行分析。docker
其实,私有库的镜像最原始来源仍是从公库中下载的,可是企业公司中为何不都直接使用公库下载须要的镜像呢,容许使用 registry 搭建本地私有仓库,具有这些公库不具有的优势:
一、节省网络带宽,针对于每一个镜像不用每一个人都去中央仓库上面去下载,只须要从私有仓库中下载便可;
二、提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。
接下来,具有来搭建一下 docker私有仓库:
(1)安装相关软件包:数据库
安装 harbor: [root@localhost abc]# tar zvxf harbor-offline-installer-v1.2.2.tgz -C /usr/local/ 安装 docker-compose: [root@localhost abc]# cp docker-compose /usr/bin/ //将docker-compose 复制到/bin/目录下,系统识别后,就能够直接使用 docker-compose命令了。
(2)修改 harbor.cfg 配置文件:
(3)启动后端
[root@localhost local]# cd harbor/ [root@localhost harbor]# ls common docker-compose.yml harbor.v1.2.2.tar.gz NOTICE docker-compose.clair.yml harbor_1_1_0_template install.sh prepare docker-compose.notary.yml harbor.cfg LICENSE upgrade [root@localhost harbor]# sh /usr/local/harbor/install.sh //开启
(4)查看镜像和容器是否都已启动:浏览器
docker images //查看镜像 docker ps -a //查看容器 docker-compose ps //查看容器
(5)验证:用浏览器访问 192.168.220.131
用户名和密码等信息能够在 harbor.cfg 这个文件中,均可以查询到,若是不修改,默认的为:
用户名:admin
密 码:Harbor12345
(6)手动建立镜像(点击 “+项目”):建立一个名为 myproject-kgc 的项目:
(7)镜像建立好以后,回到控制台,能够经过 docker 命令在本地经过 127.0.0.1 来登陆和推送镜像:网络
docker login -u admin -p Harbor12345 http://127.0.0.1
(8)从公库中下载一个镜像再上传到私库中:架构
[root@localhost harbor]# docker pull cirros //下载镜像 [root@localhost harbor]# docker tag cirros 127.0.0.1/myproject-kgc/cirros:v1 //镜像更换标签
(9)将刚刚打好标签的镜像上传到私库中ide
[root@localhost harbor]# docker push 127.0.0.1/myproject-kgc/cirros
(10)上传好以后,咱们就能够在 Harbor 中看到这个镜像了:
(11)再打开一台虚拟机,做为客户端,链接 Harbor ,来上传和下载镜像:
一、首先要修改 /usr/lib/systemd/system/docker.service 配置文件,关联上私库,添加如下代码(必定要添加,不然会出现报错):3d
--insecure-registry 192.168.220.131
二、加载
systemctl daemon-reload //重载 systemctl restart docker //重启
三、登陆
docker login -u admin -p Harbor12345 http://192.168.220.131
四、如今咱们能够在这台客户机上下载私库中已经有的镜像:
docker pull 192.168.220.131/myproject-kgc/cirros:v1
五、或者从公库中下载一个镜像,再打标签,上传到私库中:
[root@localhost ~]# docker pull cirros [root@localhost ~]# docker tag cirros:latest 192.168.220.131/myproject-kgc/cirros:v2 [root@localhost ~]# docker push 192.168.220.131/myproject-kgc/cirros:v2
六、此时,Harbor 中能够发现,又多了一个新上传的镜像:
七、咱们也能够将咱们经常使用的镜像下载下来,打好标签上传到私库中:
[root@localhost ~]# docker pull nginx [root@localhost ~]# docker tag nginx:latest 192.168.220.131/myproject-kgc/nginx:v1 [root@localhost ~]# docker push 192.168.220.131/myproject-kgc/nginx:v1
八、此时,Harbor 就会多出一个新镜像:
[root@localhost harbor]# docker-compose down -v //关闭全部容器
[root@localhost harbor]# docker-compose up -d
添加用户:用户管理 -----> 建立用户 (注意密码须要大写+小写)
[root@localhost ~]# docker logout http://192.168.220.131 [root@localhost ~]# docker login http://192.168.220.131