docker 三大组件 镜像 容器 仓库
仓库:保存镜像
私有,自定义用户的形式登录仓库,拉去或者上传镜像(内部管理的用户)
harbor:是由VMware公司开发的,开源的企业级的docker registry 项目 。
帮助用户快速的搭建一个企业级的docker仓库的服务。
1.harbor的特性
1.基于角色进行控制,用户和仓库都是基于项目进行的,用户在每个项目中可以拥有不同的权限
2.基于镜像,在不同的harbor实例之间进行复制
3.harbor自带一个数据库,AD/LDAP(类似于数据库中的表),用于对已经存在的用户进行认证和管理。
4.镜像删除和垃圾回收,仓库中的镜像可以被删除(基于权限控制的),也可以回收镜像占用的空间。
5.图形化界面的,用户可以直接通过浏览器来对镜像仓库进行管理。
6.审计管理,所有对镜像仓库的操作都可以被记录溯源。
7.支持API操作。
API的程序接口,端口:主机和主机之间的通信,API是应用和应用之间的接口。管理员可以基于API调用接口,和更多的其他的程序进行集成。
2.harbor的组件
1.proxy:安装完了harbor之后,他会自动生成一个nginx的容器,自动对外映射,80端口,nginx的前端代理,在harbor当中 registry,UI,TOKEN 都在nginx的反向代理后面。通过nginx的代理,可以把请求转发到后端不同的应用。
2.Registry:负责存储镜像,docker pull /push的命令都是由其负责。用户进行访问控制,不同的用户对docker镜像有不同的读写权限。Resgistry每次都要会指向一个不同的Token,强制用户每次的pull/push,都必须带一个合法的token(公钥对),Resgistry会通过公钥对,进行解密验证,身份合法才能指定操作。
3.CORE SERVICES:harbor的核心功能:提供三个服务
1.UI:提供图形化界面。
2.webhook:仓库上所有镜像的变化(增删改)都会传送给webhook,以实现在UI界面上。
3.Token:签发每一次push和pull的公钥对,用来和仓库进行权限认证。
4.database:harbor-db 为核心core services 提供数据库存储服务,用户权限,审计日志 docker镜像的分组和项目信息
5.jobservice:主要用于镜像的复制,本地镜像可以同步到远程harbor上
6.log collector(harbor-log) 统一日志收集工具
3.实验
docker1 安装仓库 192.168.233.40 docker-ce har-bor docker-compose
docker2 客户端 192.168.233.50 docker-ce har-bor
docker3 安装仓库-----实现远程同步 192.168.233.60 docker-ce har-bor
所有
systemctl stop firewalld
setenforce 0
docker1
cd /opt
ls
把compose 和harbor 拖进来
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
tar -xf harbor-offline-installer-v2.8.1.tgz -C /usr/local
cd /usr/local/harbor/
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
./prepare #编译环境
./install.sh
docker ps
访问192.168.233.40
密码123456
docker pull nginx:1.22.0
docker tag nginx:1.22.0 127.0.0.1/library/nginx:dn1
docker images
docker push 127.0.0.1/library/nginx:dn1
docker login -u admin -p123456 http://127.0.0.1
docker push 127.0.0.1/library/nginx:dn1
新建项目
docker login -u guoqi -p Guoqi666 http://127.0.0.1
docker tag nginx:1.22.0 127.0.0.1/dntest/nginx:gq1
docker push 127.0.0.1/dntest/nginx:gq1
发现权限不够
在项目dntest
docker push 127.0.0.1/dntest/nginx:gq1
##角色:
访客:只有看,只有读权限
开发者:可以有读写权限,但是没有删除权限
维护人员:读写权限,修改其他配置的权限
项目管理员:对该项目拥有所有权限
##
docker2:
vim /usr/lib/systemd/system/docker.service
13 行 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.66.14
systemctl daemon-reload
systemctl restart docker
docker login -u guoqi -p Guoqi666 http://192.168.233.40
docker pull logstash
docker images
docker tag logstash:latest 192.168.233.40/dntest/logstash:gq1
docker push 192.168.233.40/dntest/logstash:gq1
访问192.168.233.40可以见到
docker3:
把compose跟前面一样的操作
把harbor 移到opt
一样的操作
vim harbor.yml
把compose 和harbor 拖进来
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
tar -xf harbor-offline-installer-v2.8.1.tgz -C /usr/local
cd /usr/local/harbor/
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
./prepare
./install.sh
192.168.233.60
这时候下面就复制成功了,可以去项目查看结果