目录
一、Docker Harbor的概述
1、Docker Harbor的概述
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目。
2、Harbor的优势
(1)基于角色控制
(2)基于镜像的复制策略
(3)支持LDAP/AD,通过VPN连接域使用
(4)图像删除和垃圾收集
(5)图像UI
(6)审计
(7)RESTful API
3、Harbor 配置文件以及相关参数
API:提供Harbor RESTful API
UI:提供图形化界面,帮助用户管理Registry上的镜像, 并对用户进行授权。
Webhook:为了及时获取Registry上镜像状态变化的情况,在Registry上配置Webhook,把状态变化传递给UI模块。
Auth服务:负责根据用户权限给每个Docker Push/Pull命令签发Token。Docker客户端向Registry服务发起的请求,如果不包含Token,会被重定向到这里,获得Token后再重新向Registry进行请求。
Replication Job Service:提供多个Harbor实例之间的镜像同步功能。
Log Collector:为了帮助监控Harbor运行,负责收集其他组件的日志,供日后进行分析。
二、使用Harbor构建docker私有仓库
1、环境搭建
服务端 ip地址:192.168.222.10 docker 20.10.5、docker-compose、harbor-offline-v1.2.2
客户端 ip地址:192.168.222.100 docker 20.10.5
2、部署Harbor
(1)安装包下载 操作主机地址:192.168.222.10
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
cp -p docker-compose /usr/local/bin/
chmode +x /usr/local/bin/docker-compose
(2)配置 Harbor 参数文件
vim /usr/local/harbor/harbor.cfg
#第五行
hostname = 192.168.222.10
(3)启动 Harbor
sh /usr/local/harbor/install.sh
(4)查看 Harbor 启动镜像和容器
查看容器
检查服务容器是否开启
(5)在UI界面创建项目
登录后的界面
(6)在本地测试仓库功能
登录
登录
docker login -u admin -p Harbor12345 http://127.0.0.1
下载镜像进行测试
docker pull nginx
docker tag nginx 127.0.0.1/siproject/nginx:v1
docker push 127.0.0.1/siproject/nginx:v1
验证
(7)在客户端上传镜像
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.222.10 --containerd=/run/containerd/containerd.sock
重启服务
systemctl daemon-reload
systemctl restart docker
下载镜像
docker pull tomcat
docker images
docker tag tomcat 192.168.222.10/siproject/tomcat:v2
docker push 192.168.222.10/siproject/tomcat:v2
3、维护管理Harbor
(1)停止现有的 Harbor 实例
docker-compose down -v
(2) 修改配置文件
vim harbor.cfg
(3)运行 prepare 脚本来填充配置
./prepare
(4) 重启服务
docker-compose up -d
4、创建 Harbor 用户
在客户端上操作
删除之前打标签的镜像
docker rmi 192.168.222.10/siproject/tomcat:v2
测试创建的新用户能否使用
docker logout 192.168.222.10
docker login 192.168.222.10
5、移除 Harbor 服务容器以及全部数据
docker-compose down -v
rm -rf /data/database/
rm -rf /data/registry/