镜像仓库学习笔记
一、镜像
镜像一般指 Docker 镜像,是一个 Linux 的文件系统(Root FileSystem),这个文件系统里面包含可以运行在 Linux 内核的程序以及相应的数据。
一般而言, Linux 分为两个部分:Linux 内核(Linux Kernel)与用户空间,而真正的 Linux 操作系统,是指 Linux 内核,我们常用的 Ubuntu、CentOS 等操作系统其实是不同厂商在 Linux 内核基础上添加自己的软件与工具集(tools)形成的发布版本(Linux Distribution)。
因此,我们也可以把镜像看成是上面所说的用户空间,当 Docker 通过镜像创建一个容器时,就是将镜像定义好的用户空间作为独立隔离的进程运行在宿主机的 Linux 内核之上。
镜像的两个特征:
镜像是分层(Layer)的:即一个镜像可以多个中间层组成,多个镜像可以共享同一中间层,我们也可以通过在镜像添加多一层来生成一个新的镜像。
镜像是只读的(read-only):镜像在构建完成之后,便不可以再修改,而上面我们所说的添加一层构建新的镜像,这中间实际是通过创建一个临时的容器,在容器上增加或删除文件,从而形成新的镜像,因为容器是可以动态改变的。
二、仓库
镜像仓库分为公共仓库和私有仓库。
公共仓库一般是指 Docker Hub,除了获取镜像外,我们也可以将自己构建的镜像存放到 Docker Hub,这样,别人也可以使用我们构建的镜像。
有时候自己部门内部有一些镜像要共享时,如果直接导出镜像拿给别人又比较麻烦,使用像 Docker Hub 这样的公共仓库又不是很方便,这时候我们可以自己搭建属于自己的私有仓库服务,用于存储和分布我们的镜像。Docker 官方提供了 registry 这个镜像,可以用于搭建私有仓库服务。
三、开源镜像仓库
1、Docker Registry
Docker Registry 是最流行的开源私有镜像仓库,以镜像格式发布,在下载后运行一个 Docker Registry 容器即可启动一个私有镜像仓库服务:
Docker Registry 的有点如下:
(1)Docker Registry 的最大优点就是简单,只需要运行一个容器就能集中管理一个集群范围内的镜像,其他机器就能从该镜像仓库下载镜像了。
(2)在安全性方面,Docker Registry 支持 TLS 和基于签名的身份验证。
(3)Docker Registry 也提供了 Restful API,以提供外部系统调用和管理镜像库中的镜像
2、VMware Harbor
VMware Harbor(简称 Harbor)项目是由 VMware 中国研发团队开发的开源容器镜像仓库系统,基于 Docker Registry 并对其进行了许多增强,主要特性包括:
基于角色的访问控制
镜像复制
Web UI 管理界面
可以集成 LDAP 或 AD 用户认证系统
审计日志
提供 RESTful API 以提供外部客户端调用
镜像安全漏洞扫描(从 v1.2 版本开始集成了 Clair 景象扫描工具)
3、Sonatype Nexus
Sonatype Nexus 是一个软件仓库管理器,主要有 2.X 和 3.X 两个大版本。2.X 版本主要支持 Maven、P2、OBR、Yum 等仓库软件;3.X 版本主要支持 Docker、NuGet、npm、Bower、PyPI、Ruby Gems、Apt、Conam、R、CPAN、Raw、Helm 等仓库软件,也支持构建工具 Maven。
Sonatype Nexus 的特点如下:
部署简单,通过启动一个容器即可完成
docker run -d --name nexus -p 5000:5000 -p 8081:8081 sonatype/ docker.io/sonatype/nexus3
支持 TLS 安全认证
提供 Web UI 管理界面
支持代理仓库(Docker Proxy),可以将到 Nexus 镜像仓库的操作代理到另一个远程镜像库
支持仓库组(Docker Group),可以把多个仓库组合成一个地址提供服务
除了支持 Docker 镜像,还支持对其他软件仓库的管理,例如:Yum、Npm 等。目前不支持 APK(alpine 系统软件仓库)
4、SUSE Portus
SUSE Portus 是另一个开源镜像库,其特点包括:
基于组(Team)和命名空间(Namespace)的细粒度访问权限控制
Web UI 管理界面
可以集成 LDAP 用户认证系统,也支持 OAuth
审计日志
提供 RESTful API,以供外部客户端调用
评论