docker——harbor

摘要:
Harbor和Registry的比较:Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。

为什么要用harbor?

在实际生产运维中,往往需要把镜像发布到几十、上百台或更多的节点上。这时单台Docker主机上镜像已无法满足,项目越来越多,镜像就越来越多,都放到一台Docker主机上是不行的,我们需要一个像Git仓库一样系统来统一管理镜像。这里介绍的是一个企业级镜像仓库Harbor,将作为我们容器云平台的镜像仓库中心。
Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker-Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等,足以满足基本企业需求。

Harbor和Registry的比较:

Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。
1、提供分层传输机制,优化网络传输
Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2、提供WEB界面,优化用户体验
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
3、支持水平扩展集群
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
4、良好的安全机制
企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。
5、Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。

搭建harbor:

第一步:

yum install epel-release            #下载扩展源
yum install -y python-pip
pip install --upgrade pip
pip install docker-compose

第二步:下载harbor

https://github.com/goharbor/harbor/releases

第三步:解压harbo安装包

[root@localhost ~]# tar xf harbor-offline-installer-v1.8.2.tgz

第四步:修改配置文件

[root@localhost ~]# cd harbor/
[root@localhost harbor]# vim harbor.yml
...
hostname: 192.168.59.200
...

第五步:执行harbor脚本

[root@localhost harbor]# ./install.sh

第六步:浏览器配置

...
账号/密码: admin/Harbor12345
harbor_admin_password: Harbor12345 #harbor.yml
...

docker——harbor第1张

docker——harbor第2张

第七步:镜像改名

[root@localhost harbor]# docker tag httpd:latest 192.168.59.200/test/httpd:v1

第八步:修改docker配置文件

[root@localhost harbor]# vim /etc/docker/daemon.json 
...
{
"registry-mirrors": ["https://6wnyrhwf.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.59.200:8878"],
"insecure-registries": ["192.168.59.200"]
}
...

第九步:重启docker

[root@localhost harbor]# systemctl restart docker

第十步:启动harbor

[root@localhost harbor]# docker-compose start
Starting log ... done
Starting postgresql ... done
Starting redis ... done
Starting registry ... done
Starting core ... done
Starting jobservice ... done
Starting portal ... done
Starting proxy ... done
Starting registryctl ... done 

第十一步:需要登录harbor

[root@localhost harbor]# docker login 192.168.59.200
Username: admin
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

第十二步:推送镜像至harbor

[root@localhost harbor]# docker push 192.168.59.200/test/httpd
The push refers to repository [192.168.59.200/test/httpd]
0f8d971d177b: Pushed 
97fd31ecd005: Pushed 
82155933cfa6: Pushed 
2fd9f57029b0: Pushed 
02bd518ef304: Pushed 
b8342f9976fc: Pushed 
2c833f307fd8: Pushed 

第十三步:harbor查看
docker——harbor第3张

docker——harbor第4张

第十四步:拉取镜像

[root@localhost harbor]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.59.200/test/httpd v1 fb2f3851a971 18 months ago 178MB
[root@localhost harbor]# docker image rm -f fb2f3851a971
[root@localhost harbor]# docker pull 192.168.59.200/test/httpd:v1 
v1: Pulling from test/httpd
3d77ce4481b1: Pull complete 
73674f4d9403: Pull complete 
d266646f40bd: Pull complete 
ce7b0dda0c9f: Pull complete 
01729050d692: Pull complete 
014246127c67: Pull complete 
7cd2e04cf570: Pull complete 
Digest: sha256:58270ec746bed598ec109aef58d495fca80ee0a89f520bd2430c259ed31ee144
Status: Downloaded newer image for 192.168.59.200/test/httpd:v1
192.168.59.200/test/httpd:v1
[root@localhost harbor]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.59.200/test/httpd v1 fb2f3851a971 18 months ago 178MB

免责声明:文章转载自《docker——harbor》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用原生css实现高斯模糊、黑白等滤镜效果TortoiseGit 使用教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Docker之Dockfile

什么是DockerFile Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系。Docker程序将读取Dockerf...

Java 8 终于支持 Docker!

Java 8曾经与Docker无法很好地兼容性,现在问题已消失。 请注意:我在本文中使用采用GNU GPL v2许可证的OpenJDK官方docker映像。在Oracle Java SE中,这里描述的docker支持功能在更新191中引入。Oracle在2019年4月更改了Java 8更新的许可证,自Java SE 8 Update 211以来商业使用不再...

Docker基础入门

Docker概述 Docker是一个用于开发,交付和运行应用程序的开放平台。 Docker优势 更快速的交付和部署 对于开发人员 - Build Once, Run Anywhere 容器意味着环境隔离和可重复性。开发人员只需为应用创建一次运行环境,然后打包成容器便可在其他机器上运行。另外,容器环境与所在的 Host 环境是隔离的,就像虚拟机一样,但更快更...

源码安装LNMP与搭建Zabbix

系统环境:CentOS release 6.5 (Final) 搭建Zabbix 3.0对PHP环境要求>= 5.4 一、下载NMP的软件包: N:wget http://nginx.org/download/nginx-1.8.0.tar.gz P:wget http://cn2.php.net/distributions/php-5.6.28.t...

docker运行mysql容器自动停止的问题解救方案如下

在docker中启动的mysql容器会自动停止是因为mysql使用的内存过多; 解决方法如下: 1、先卸载之前的mysql容器,如下: docker ps -a #获取docker中的所有容器   通过docker rm cbb412415aab进行卸载删除 2、重新运行mysql容器: docker run -it -m 300M --memo...

shell脚本(2)-shell脚本语法

一、如何抒写shell脚本 1、shell脚本的命名 名字要有意义,不要以a、b、c、1、2、3这种方式命令,建议以sh结尾,在30个字节内,例如:check_memory.sh 2、shell脚本的格式 shell脚本开头必须指定运行环境以#!这个特殊组合来组成,如:#!/bin/bash指该脚本运行解析由/bin/bash来完成 shell的注释使用#...