码迷,mamicode.com
首页 > 其他好文 > 详细

Docker系列-5.分发镜像

时间:2020-08-25 15:53:39      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:nexus   登录   war   oca   ide   enc   str   ase   多个   

Docker系列-5.分发镜像

镜像的管理分为手工分发和docker-hub或者Registry仓库两种方式

手工分发镜像

使用docker savedocker load可以在没有Registry的情况下实现image的线下分发和迁移

[root@localhost ~]# docker save ubuntu:latest -o ubuntu:tatest.tar
[root@localhost ~]# docker save ubuntu:latest | gzip > ubuntu:tatest.tgz

[root@localhost ~]# ls -lh
-rw-------. 1 root root  73M Aug  2 12:58 ubuntu:tatest.tar
-rw-r--r--. 1 root root  27M Aug  2 12:59 ubuntu:tatest.tgz

[root@localhost ~]# docker save redis:4.0.14_man | gzip >  redis:4.0.14_man.tgz         

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              update              3c7832c9920b        3 hours ago         96.4MB
ubuntu              latest              1e4467b07108        9 days ago          73.9MB
httpd               latest              9d2a0c6e5b57        10 days ago         166MB
nginx               latest              8cf1bfb43ff5        11 days ago         132MB
centos              latest              831691599b88        6 weeks ago         215MB
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB

[root@localhost ~]# docker load -i redis:4.0.14_man.tgz
4014348e492a: Loading layer [==================================================>]  173.8MB/173.8MB
f3aafaca0eb9: Loading layer [==================================================>]   7.69MB/7.69MB
d0549792a5c2: Loading layer [==================================================>]  103.1MB/103.1MB
bc8ef3880d58: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: redis:4.0.14_man

简易Registry镜像仓库

Registry用于保存 Docker 镜像,包括镜像的层次结构和元数据,利用它可以方便的实现镜像的下载、上传与修改。一般来说仓库有Docker Hub主仓库、公有云Registry,私有云Registry。

公有云Registry

Docker Hub是默认的Docker Registry。 Docker Hub 允许任何人在线托管自己的镜像。

另外可以在/etc/docker/daemon.json 中加入更多的其他的国内Registry镜像,一般公有云的Registry都是可以支持匿名Pull出镜像的。

自建私有Registry

docker-registry历经2代,registry1是python语言写的,而现在registry2版本即docker-distribution更加安全和快速,并且是用go语言写的,docker1.6及其以上版本已经不再支持老的Registry。

两种方式安装和部署Registry,第一种是用传统的yum方式,安装后通过systemctl来管理仓库服务。

1 使用 yum 安装docker-distribution

[root@localhost ~]# yum info docker-distribution
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.huaweicloud.com
Available Packages
Name        : docker-distribution
Arch        : x86_64
Version     : 2.6.2
Release     : 2.git48294d9.el7
Size        : 3.5 M
Repo        : extras/7/x86_64
Summary     : Docker toolset to pack, ship, store, and deliver content
URL         : https://github.com/docker/distribution
License     : ASL 2.0
Description : Docker toolset to pack, ship, store, and deliver content

[root@localhost ~]# yum install -y docker-distribution
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.huaweicloud.com
Resolving Dependencies
--> Running transaction check
---> Package docker-distribution.x86_64 0:2.6.2-2.git48294d9.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================
 Package                                  Arch                        Version                                     Repository                   Size
====================================================================================================================================================
Installing:
 docker-distribution                      x86_64                      2.6.2-2.git48294d9.el7                      extras                      3.5 M

Transaction Summary
====================================================================================================================================================
Install  1 Package

Total download size: 3.5 M
Installed size: 12 M
Downloading packages:
docker-distribution-2.6.2-2.git48294d9.el7.x86_64.rpm                                                                        | 3.5 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : docker-distribution-2.6.2-2.git48294d9.el7.x86_64                                                                                1/1 
  Verifying  : docker-distribution-2.6.2-2.git48294d9.el7.x86_64                                                                                1/1 

Installed:
  docker-distribution.x86_64 0:2.6.2-2.git48294d9.el7                                                                                               

Complete!

2 以容器方式安装registry

[root@localhost ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
cbdbe7a5bc2a: Pull complete 
47112e65547d: Pull complete 
46bcb632e506: Pull complete 
c1cc712bcecd: Pull complete 
3db6272dcbfa: Pull complete 
Digest: sha256:8be26f81ffea54106bae012c6f349df70f4d5e7e2ec01b143c46e2c03b9e551d
Status: Downloaded newer image for registry:latest

企业级Registry镜像仓库

企业级镜像仓库方案

常见的几种docker registry企业级实现,包括官方的registry、Harbor,Quay Enterprise以及 Nexus等。

相对于企业级Registry镜像仓库,简易的Registry没有考虑的因素有:

  • 缺少UI用户界面

  • 缺少角色的权限控制、用户管理、权限管控、行为审计等安全功能

  • 无法和企业的统一登录或者LDAP对接

  • 缺少对镜像的漏洞扫描等安全防护

  • 缺少对镜像文件生命周期维护功能

  • 缺少镜像其它镜像仓库的能力

  • 缺少高效的镜像文件分发能力,如,使用BT协议进行分发

  • 缺少镜像仓库的运行时监控

  • 缺少企业级的服务支持,如, bug fix、安全漏洞补丁的通知、产品升级等

  • 不适合大规模容器集群的使用,特别是跨地域的在多个数据中心进行镜像的同步

Harbor

Harbor是VMware公司开源的企业级云原生Registry项目, 由中国研发团队开源,包含在vmware tanzu产品中,用来存储、签名并扫描存储工件,能够提供诸如用户管理,访问控制,活动审计,和节点间的复制等一系列高级功能,可以让你迅速的搭建自己的私有镜像仓库。Harbor只能通过docker的方式进行部署,但是Harbor的开源版本并没有与Kubernetes进行深度集成;不能运行在K8S平台上。

Quay Enterprise

Quay.io是第一个使用私有存储库的托管镜像仓库。CoreOS于2014年收购了Quay,以推出首个企业级的镜像仓库。2018年CoreOS被Red Hat收购之后,Red Hat也将Quay Enterprise产品开源并持续提供企业级的支持服务。
Quay Enterprise 也是最早支持 OCI 规范的企业级镜像仓库,与 Kubernetes 集成为 Operator 提供良好的支持,并提供以下的特性:

  • 异地复制

  • 高可用性和可扩展性

  • 安全扫描

  • 自动构建触发器

  • 时间机器image回滚(基于build版本的回退)

  • 细粒度的访问控制

  • 详细的日志和审计

  • 自动连续垃圾收集,无需停机

  • 与多个存储后端集成 (如 ceph 等)

  • 支持多种身份提供商:LDAP,OAuth,OpenStack Keystone等。

  • 加密的CLI密码

  • 洪流分布

  • 容器和应用程序注册

  • 与Quay.io保持一致的UI和代码库

Nexus3

在企业中Nexus最初是给 Java用的,大家把一些工具包放入Nexus中,后来慢慢发展,可以作为众多软件pipy、yum的仓库,最新版本 Nexus3.x 全面支持 Docker 的私有镜像。所以使用 Nexus3.x 一个软件来统一管理 Docker , Maven , Yum , PyPI 也是一个明智的选择。Nexus支持传统和容器两种方式部署。

总结

它们之间的各方面对比如下表所示:

对比项 Harbor Quay Nexus
语言 Golang Python Java
部署方式 docker容器 docker容器 docker容器+传统方式
用户管理 支持 DB、LDAP 和 OIDC 支持 LDAP、Keystone、OIDC、Google 和 GitHub 支持与外部LDAP/AD
机器人账号 支持 支持 支持
权限管理 支持 支持 支持
图形用户界面 支持 支持 支持
使用文档 非常全面 较少 待定
镜像安全扫描 支持 支持 可集成Clair
镜像可信 支持 支持 待定
镜像清理 支持 支持 支持
审计日志 支持 支持 待定
Helm 管理 支持 支持 支持
多仓库管理 支持 不支持 支持多种不同类型仓库管理
镜像同步 支持 不支持 支持Proxy代理到另一个镜像库
代码仓库集成 不支持 支持 支持
镜像构建 不支持 支持 不支持
镜像下载 不支持 支持 支持
通知 支持 Webhook 支持站内信、Webhook、Email、Slack 等 支持

参考

常见的几种开源镜像仓库介绍

私有镜像仓库选型:Harbor VS Quay

Docker系列-5.分发镜像

标签:nexus   登录   war   oca   ide   enc   str   ase   多个   

原文地址:https://www.cnblogs.com/elfcafe/p/13532267.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!