docker 镜像 容器 仓库
仓库:保存镜像
私有,自定义用户的形式登录仓库,拉取或者上传镜像。(内部隔离的用户)
harbor:是VMware公司开发的,开源的企业级的docker registry项目。
帮助用户快速的搭建一个企业级的docker 仓库的服务。支持中文。
harbor的特性:
1,基于角色进行控制,用户和仓库都是基于项目进行的,用户在每个项目中拥有不同的权限
2,基于镜像,在不同的harbor实例之间进行复制。
3,harbor自带一个数据库,AD/LDAP(类似于数据库中的表),对以及存在的用户进行日志和管理。
4,镜像删除和垃圾回收仓库中的镜像可以被删除(基于权限控制)也可以回收镜像占用的空间
5,图形化界面,用户可以直接通过浏览器来对镜像仓库进行管理。
6,审计管理,使用对进行仓库的存在都可以被记录溯源。
7,支持API操作,(API的程序接口,端口:主机和主机之间的通信 API是应用和应用之间的接口。)管理员可以基于基于API调用接口,和更多的其他程序进行集成。
harbor的组件:
1,proxy:安装完了harbor之后,他会自动生成一个nginx的容器,自动对外映射,80 端口,nginx是做前端代理,在haarbor当中registry,UI,TOKEN,都是nginx的反向代理后面。通过nginx的代理,可以把请求转发到后端不同的应用。
2,Registry:复制存储镜像,docker pull/push的命令都由起负责。用户镜像访问控制,不同的用户对docker镜像由不同的读写权限。Resgistry每次都会指向一个不同的Token,强制用户每次的pull/push,都必须带一个合法的token(公钥对),Registry会通过公钥对,进行解密验证,身份合肥才能指定操作。
3,CORE SERVICES: Harbor的核心功能:提供3个服务:
一,UI:提供图形化界面。
二,Webhook:仓库上使用镜像的变化 (增删改),都会传送给webhook,一实现在UI界面上。
三,Token:签发每一次push和pull的公钥对,用来和仓库之间进行权限认证。
四,database:harbor-db,为和学习core services提供数据库存储服务,用户权限,审计日志 docker镜像的分组和项目信息。
五,job service:主要用于镜像的复制,本地镜像可以同步到远程harbor上
六,log collector(harbor-log):统一日志收集工具。
harbor都是基于docker容器化部署的,docker-compose一键编排,安装。
实验:
docker1 安装仓库 docker-ce har-bor docker-compose
docker2 客户端 docker-ce har-bor docker-compose
docker3 安装仓库--实现远程同步 docker-ce har-bor docker-compose
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
cd /opt
安装docker-compose
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
安装harbor
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
hostname: 192.168.176.81
修改为本机地址
harbor_admin_password: 123456
可以修改密码
将https注释
安装:
编译环境:
./prepare
执行脚本:
./install.sh
可以访问页面了
上传镜像
本地主机上传。
拉一个镜像:
docker pull nginx:1.22.0
换标签
docker tag nginx:1.22.0 127.0.0.1/library/nginx:cc1
上传:
docker push 127.0.0.1/library/nginx:cc1
报错:
要先登录才能上传:
docker login -u admin -p123456 http://127.0.0.1
docker push 127.0.0.1/library/nginx:cc1
用新建用户上传
docker login -u chencheng -p Chencheng123 http://127.0.0.1
换标签
docker tag nginx:1.22.0 127.0.0.1/cctest/nginx:cc2
上传: docker push 127.0.0.1/cctest/nginx:cc2
报错:
没有给用户添加角色为开发者
上传成功
角色:
访客:只能看,只有读权限
开发者:可以由读写权限,但是没有删除权限
维护人员:读写权限,修改其他配置项的权限。
项目管理员:拥有该项目的所有权限。
从另一台机子上传
docker login -u chencheng -p Chencheng123 http://192.168.176.81
报错:docker-harbor默认使用http端口,没有的化修改配置文件
vim /usr/lib/systemd/system/docker.service
删除后面的,修改
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.176.81
systemctl daemon-reload
systemctl restart docker
docker login -u chencheng -p Chencheng123 http://192.168.176.81
登录成功:
docker pull logstash
改标签
docker tag logstash:latest 192.168.176.81/cctest/logstash:cc3
docker push 192.168.176.81/cctest/logstash:cc3
实现仓库之间同步:
查看仓库中的镜像
cd /data/registry/docker/registry/v2/repositories/cctest/
在docker3:192.168.176.83
安装harbor docker-compose
12345
把81的镜像拉到83上
只会拉取公开的
可以改变