Harbor使用docker-compose单机容器编排方式一键安装部署,包括如下组件
Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有如下优势:
Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。
kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。
之前两篇介绍了 使用Docker registry两种方式搭建Docker私服
使用Nexus3搭建Docker私服
现在开始搭建Harbor私服......
安装docker-compose version 1.24.1, build 4667896b
官网太慢,推荐通过pip 安装
yum -y install epel-release
pip --version
pip install --upgrade pip
pip install docker-compose
https://docs.docker.com/compose/install/
docker官网compose.yml文件属性详解
地址:https://docs.docker.com/compose/compose-file/
安装
wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.5.tgz
https://github.com/goharbor/harbor/releases/tag/v1.8.2
tar -zxf harbor-offline-installer-v1.7.5.tgz -D /opt
/etc/docker/daemon.json文件增加 192.168.3.34
systemctl restart docker
修改配置文件
解压缩之后,目录下会生成harbor.cfg文件,该文件就是Harbor的配置文件。
hostname = 192.168.3.34
ui_url_protocol = http
customize_crt = off
坑1:若有其他服务占用80/443端口,想办法调整规避
修改docker-compose.yml文件
proxy:
image: goharbor/nginx-photon:v1.7.5
container_name: nginx
restart: always
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- NET_BIND_SERVICE
volumes:
- ./common/config/nginx:/etc/nginx:z
networks:
- harbor
dns_search: .
ports:
- 5080:80
- 5443:443
- 4443:4443
修改 common/templates/registry/config.yml
auth:
token:
issuer: harbor-token-issuer
realm: $public_url:5080/service/token
坑2:若是要改变/data目录,要全部改掉,这里使用默认路径/data
# ./prepare(更新配置文件,如果是重装,则先rm -rf /data再执行)
# ./install.sh
✔ ----Harbor has been installed and started successfully.----
安装完成
查看端口占用
netstat -tunlp
查看日志:
ls /var/log/harbor/
docker-compose ps
docker login 192.168.3.34
username:admin password:Harbor12345
登录harbor web:
账号:admin 密码为默认:Harbor12345。密码在harbor.cfg文件中可以找到。
登录之后进入下面界面。
测试:
上传镜像到Harbor
坑3:不能像之前docker-registry/nexus3那样打tag,否则push报错
给镜像打标签的时候, 要多一层 library, 这个是缺省的, 否则要建立好了project,才能推镜像
library是缺省项目,web查看结果如下:
参考:https://github.com/goharbor/harbor/blob/release-1.7.0/docs/installation_guide.md
kubernetes集群搭建harbor仓库,单机搭建harbor以及docker registry仓库搭建,内附踩坑细节
Docker Hub与Docker Store详解
Docker,Docker-Compose,Docker Swarm,Kubernetes之间的区别
为什么有了Docker registry还需要Harbor?