docker私有仓库部署与管理

一、搭建本地公有仓库

1.1 首先下载registry镜像

docker pull registry

1.2 在daemon.json文件中添加私有镜像仓库地址并重新启动docker服务

vim /etc/docker/daemon.json

1.3 运行registry容器

docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always--name registry registry:latest

1.4 下载centos镜像

docker run centos:7 /usr/bin/bash -c ls /

1.5 为镜像打上标签并上传到仓库

docker tag centos:7 当前IP地址:5000/centos:v1

docker push 当前IP地址:5000/centos:v1

1.6 列出私有仓库的所有镜像以及centos镜像有哪些tag

curl http://当前IP地址:5000/v2/_catalog

curl http://当前IP地址:5000/v2/centos/tags/list

1.7 删除centos镜像

docker images

docker rmi centos:7

docker rmi 容器ID号

1.8 查看所有镜像查看centos是否被删除

docker images

1.9 从仓库下载centos镜像

docker pull 192.168.10.10:5000/centos:v1

docker images


二、harbor简介

2.1 harbor定义

Harbor是VMware公司开源的企业级Docker Registry项目,其目标是帮助用户迅速搭建一个企业级的Docker Registry服务

Harbor以 Docker 公司开源的Registry为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。

Harbor的每个组件都是以docker容器的形式构建的,使用docker-compose来对它进行部署。用于部署Harbor的docker-compose模板位于harbor/docker-compose.yml

2.2 harbor特性

  1. 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
  2. 基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。
  3. 支持LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理。
  4. 镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。
  5. 图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。
  6. 审计管理:所有针对镜 像仓库的操作都可以被记录追溯,用于审计管理。
  7. 支持RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
  8. Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

2.3 harbor构成

Harbor 在架构上主要有 ProxyRegistryCore servicesDatabase(Harbor-db)、Log collector(Harbor-log)、Job services六个组件。

  • proxy反向代理:通过一个前置的发现代理统一接收浏览器、docker客户端的请求,并且请求转发给后端不同的服务

  • registry:负责存储docker镜像,处理docker的pull/push命令来做上传和下载

  • core services :harbor的核心功能包括:

    • ui:提供图像界面

    • webhook:网站一些服务功能(通知机制)

    • token(令牌):提供身份验证服务

  • log collector:负责日志(其他的组件日志、上传、下载、用户、访问)收集,以供后期进行分析和健康检查

  • database:提供数据库服务,主要记录数据库镜像的元信息以及用户的身份信息

  • job services:用于镜像复制,本地镜像可以被同步到远程harbor实例上

2.3.1 认证三种方式

  • 令牌
  • 用户密码
  • ssl

2.4 总结

Harbor 的每个组件都是以Docker容器的形式构建的,因此,使用Docker Compose来对它进行部署。

总共分为7个容器运行,通过在docker-compose.yml所在目录中执行docker-compose ps命令来查看, 名称分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。

其中harbor-adminserver主要是作为一个后端的配置数据管理,并没有太多的其他功能。harbor-ui所要操作的所有数据都通过harbor-adminserver这样一个数据配置管理中心来完成。

解释:adminserver(管理员):用于管理用户操作以及身份认证等

2.5 harbor实验部署

2.5.1 前期准备

| | IP地址 | 服务 |
| harbor服务器 | 192.168.10.9 | docker-ce、docker-compose、harbor-offline-v1.2.2 |

client客户端 192.168.10.7 docker-ce

2.5.2 在harbor实验部署

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-\`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose --version

2.5.3 服务端部署harbor服务

2.5.3.1 下载harbor压缩包并解压到指定位置

cd /opt/

将harbor-offline-installer-v1.2.2.tgz和docker-compose-1.25.0转移到当前xshell下

tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

或者tar xf harbor-offline-installer-v1.2.2.tgz -C /usr/local/

mv docker-compose-1.25.0 /usr/local/bin

2.5.3.2 修改harbor安装的配置文件

在配置文件下修改您当前harbor服务器的IP地址

cd /usr/local/harbor

vim /usr/local/harbor/harbor.cfg

2.5.3.3 启动harbor服务

cd /usr/local/harbor/

./prepare

./install.sh

2.5.3.4 查看harbor启动的镜像

docker-compose ps

2.5.3.5 网页登录harbor

请输入您的IP地址/harbor,然后输入用户名和密码登入harbor

2.5.3.6 创建一个项目

点击项目,新建项目输入项目名称,查看项目名称

2.5.3.7 登录harbor

docker login -u admin -p Harbor12345 http://127.0.0.1

或者 docker login -u admin -p Harbor12345 http://您当前的本机地址

2.5.3.8 下载nginx

docker pull nginx

2.5.3.9 为镜像打上标签

docker tag nginx:latest 127.0.0.1/myproject-xxx/nginx:v1

或者docker tag nginx:latest 您的IP地址/mysproejct-xxx/nginx-v1

docker images

2.5.3.10 上传镜像到仓库

docker push 127.0.0.1/myproject-xxx/nginx:v1

2.5.3.11 查看是否传送到仓库中

2.5.4 客户端操作

2.5.4.1 登录harbor仓库

docker login -u admin -p Harbor12345 http://您harbor服务器的IP地址

2.5.4.1.1 解决方式一

在**/usr/lib/systemd/system/docker.service**里编辑

vim /usr/lib/sysetmd/system/docker.service

2.5.4.1.2 解决方式二

daemon.json里进行编辑

vim /etc/docker/daemon.json

2.5.4.2 重新启动服务,再次登录harbor

systemctl daemon-reload

systemctl restart docker

docker login -u admin -p Harbor12345 http://您当前Harbor服务器的IP地址

2.5.4.3 仓库下载镜像并查看

docker pull 您当前harbor服务器的IP地址/myproject-xxx/nginx:v1

docker images

2.5.4.4 仓库下载tomcat

docker pull tomcat

2.5.4.5 标签镜像同时上传到仓库,查看网页仓库是否上传成功

docker tag tomcat:latest 您当前harbor服务器的IP地址/myproject-xxx/tomcat:v2

docker push 您当前harbor服务器的IP地址/myproject-xxx/tomcat:v2

2.5.5 维护管理harbor仓库

2.5.5.1 创建用户
2.5.5.2 添加项目成员

点击成员,新建仓库

2.5.5.3 客户端上使用普通账户操作镜像
2.5.5.3.1 删除tomcat:v2镜像,退出harbor,然后再次用新密码登录harbor

docker rmi 您当前harbor服务器的IP地址/myproject-xxx/tomcat:v2

docker images

docker logout 您harbor服务器的IP地址

docker login -u admin -p Harbor12345 http://您当前harbor服务器的IP地址

2.5.5.3.2 上传tomcat:v3镜像,同时在网页仓库查看

docker push 您当前harbor服务器的IP地址/myproject-xxx/tomcat:v3

2.5.5.4 查看日志信息
2.5.5.5 修改Harbor.cfg配置文件
2.5.5.5.1 删除docker-compose

cd /usr/local/harbor/

docker-compose down -v

2.5.5.5.2 重新生成文件

./prepare

2.5.5.5.3 启动并运行容器

docker-compose up -d

2.5.5.6 移除Harbor服务容器同时保留镜像数据/数据库,同时进行迁移
2.5.5.6.1 删除docker-compose

docker-compose down -v

2.5.5.6.2 查看数据

ls /data/registry/docker/registry/v2/repositories/myproject-xxx/

cd /data/registry/docker/registry/v2/repositories/myproject-xxx/

ls

2.5.5.6.3 打包镜像数据

tar zcvf xxx-registry.tar.gz ./*

2.5.5.6.4 备份内容

ls

cd /usr/local/harbor/

mv /data/registry/docker/registry/v2/repositories/myproject-xxx/xxx-registry.tar.gz /opt/

相关推荐
老司机张师傅3 分钟前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
微信-since8119210 分钟前
[ruby on rails] 安装docker
后端·docker·ruby on rails
努力的悟空1 小时前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
吴半杯2 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
今天我刷leetcode了吗2 小时前
docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker
tcp/ip·docker·电脑
周末不下雨2 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
lwprain3 小时前
常用docker应用部署,wordpress、mysql、tomcat、nginx、redis
mysql·docker·tomcat
耗同学一米八3 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
东华果汁哥4 小时前
【linux 免密登录】快速设置kafka01、kafka02、kafka03 三台机器免密登录
linux·运维·服务器
肖永威4 小时前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos