docker-镜像仓库介绍

1,103 阅读4分钟

Docker Registry镜像仓库

镜像仓库的使用场景

image.png

常见的公有镜像仓库

商业镜像仓库

常见的私有自建镜像仓库

和harbor镜像仓库简介、高可用机制、部署自签名的harbor镜像仓 库并实现镜像统一分发

harbor简介

  • Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由vmware开源,
  • 在Docker Registry的基础至上添加了一些企业必需的功能特性, 例如安全认证、镜像扫描和镜像管理、远程镜像复制等,
  • 扩展了开源的Docker Distribution的功能,作为一个企业级的私有Registry服务器,Harbor提供了 更好的性能和安全,提升了用户使用Registry分发镜像镜像的效率,
  • Harbor支持安装在多个Registry节点以实现镜像资源夸主机复制、从而实现镜像服务的 高可用和镜像数据的安全,
  • 另外将镜像全部保存在私有网络的Registry中,也可以确保代码数据和密码配置等信息仅在公司内部网络中传输,从而保证核心 数据的安全性
  • harbor官方网址: goharbor.io/
  • harbor官方github地址: github.com/vmware/harb…
  • vmware官方开源服务列表地址: vmware.github.io/harbor/cn

harbor的优势

  • 基于角色的访问控制:用户与Docker镜像仓库通过“项目”进行项目管理,可以对不同的账户设置不同的权限,以实现权限的精细管控。
  • 镜像复制:镜像可以在多个Registry实例中复制(同步),可以实现高性能、高可用的镜像服务。
  • 图形化用户界面:用户可以通过浏览器来浏览,管理当前Docker镜像仓库,管理项目和镜像等。
  • AD/LDAP 支:Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  • 审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 国际化:已拥有英文、中文、德文、日文和俄文等多语言支持版本。
  • RESTful API:提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
  • 部署简单:提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。

harbor组件简介

  • Core Service:基于nginx实现的harbor反向代理组件,用于接 受客户端请求,代理会转发harbor web和docker client的各种请 求到后端服务上。
  • Admin Service: harbor系统管理接口,可以修改系统配置以 及获取系统信息。
  • Job Service: harbor里面主要是为了镜像仓库之前同步使用的。
  • SQL Database:存储项目的元数据、用户、规则、复制策略等信息。
  • Image Registry:存储docker images的服务,提供镜像读写 请求服务。
  • Redis:存储缓存信息。
  • vulnerability scanning: 镜像漏洞扫描服务(基于红帽的clair实现)。
  • trusted content:可信服务,用于验证镜像的数字签名信息, 保证镜像的一致性(依赖于ssl实现)。

企业微信截图_a35a2b70-5c7c-4650-93d0-3cca88cf1069.png

harbor 部署-http

http镜像仓库:  

## 1、安装docker:
root@docker-harbor1:~# cd /usr/local/src/
root@docker-harbor1:/usr/local/src# tar xvf docker-20.10.18-binary-install.tar.gz
root@docker-harbor1:/usr/local/src# bash docker-install.sh

## 2.安装harbor:
root@docker-harbor1:~# mkdir /apps
root@docker-harbor1:~# cd /apps/
root@docker-harbor1:/apps# tar xvf harbor-offline-installer- v2.6.1.tgz
root@docker-harbor1:/apps# cd harbor/
root@docker-harbor1:/apps# cp harbor.yml.tmpl harbor.yml
root@docker-harbor1:/apps/harbor# vim harbor.yml
    hostname: harbor.magedu.net 
    http:
        port: 80  
    harbor_admin_password: 12345678

docker使用http harbor

docker主机登录  
1.配置主机名解析
root@docker-server1:~# vim /etc/hosts 172.31.6.204 harbor.magedu.net

2.docker 服务器配置仓库信任:
root@docker-server1:~# vim /etc/docker/daemon.json
"insecure-registries": ["harbor.magedu.com","harbor.magedu.net","harbor.myserver.com","172.31.7.105"],

root@docker-server1:~# systemctl restart docker
root@docker-server1:~# docker login harbor.magedu.net
    Username: admin  
    Password: xxxxxxxx #输入在自己的密码  
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json. 
    Configure a credential helper to remove this warning. See  
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store 
    Login Succeeded

3.上传镜像:  
root@docker-server1:~# docker tag alpine:3.16.2 harbor.magedu.net/myserver/alpine:3.16.2 

root@docker-server1:~# docker push harbor.magedu.net/myserver/alpine:3.16.2

4.验证镜像下载:  
配置域名解析及仓库信任  
root@docker-server1:~# docker pull harbor.magedu.net/myserver/alpine:3.16.2

阿里云镜像仓库的使用

  • 注册账户 cr.console.aliyun.com/
  • 创建镜像仓库
  • 构建镜像
  • 指定镜像tag
  • 登录镜像仓库
  • 上传镜像
  • 下载镜像
  • 实现镜像分发
[root@hybrid01 ~]# docker login --username=xxx registry.cn-wulanchabu.aliyuncs.com

[root@hybrid01 ~]# docker tag 2e200967d166 registry.cn-wulanchabu.aliyuncs.com/sensorsdeploy/scout:jfrog-internal_v1
[root@hybrid01 ~]# docker push registry.cn-wulanchabu.aliyuncs.com/sensorsdeploy/scout:jfrog-internal_v1
The push refers to repository [registry.cn-wulanchabu.aliyuncs.com/sensorsdeploy/scout]
8bb4e6af097f: Pushed 
9340e9d17d33: Pushed 
9a5e562a5036: Pushed 
09e3373b9d9a: Pushed 
4fc242d58285: Pushed 
jfrog-internal_v1: digest: sha256:6060f78eda124040cfeb19d2fcc9af417f5ee23dc05d0894fcfe21f24c9cbf9a size: 1363

image.png

常见的用法

公有云买机器 装harber 使用公有云的镜像仓库

  • 需要考虑业务所在的区域