docker registry仓库
1.介绍
registry用于保存docker镜像,包括镜像的层次结构和元数据
启动容器时,docker daemon会试图从本地获取相关的镜像;本地镜像不存在时,其将从registry中下载该镜像并保存到本地
拉取镜像时,如果不知道registry仓库地址,默认从Docker Hub搜索拉取镜像(hub.docker.com)
2.分类
Sponsor Registry:第三方的registry,供客户和docker社区使用
mirror Registry:第三方的registry,只让客户使用;如docker cn和阿里云的镜像加速器
vendor Registry:服务商的registry,由发布docker镜像的供应商提供的registry;如红帽提供的专有的,收费提供;
private Registry;通过设有防火墙和额外的安全层的私有实体提供的registry;自建的registry,在本地搭建registry,节省带宽
3.registry组成(repository和index)
repository
由特定的docker镜像的所有迭代版本组成的镜像仓库;
一个registry中可以存在多个repository
repository可分为顶层仓库和用户仓库
用户仓库名称格式为用户名/仓库名
每个仓库可以包含多个Tag,每个标签对应一个镜像
Index
维护用户账户、镜像的校验以及公共命名空间的信息
相当于为registry提供了一个完成用户认证等功能的检索接口
4.拉取上传仓库镜像
拉取镜像
docker pull [:]/[/]:
registry:仓库服务器地址;不指定默认是docker hub
port:端口;默认443
namespace:名称空间,指定是哪个用户的仓库,如果是顶层仓库,可省略
name:仓库名
tag:标签名;默认最新版本
上传镜像
docker push [OPTIONS] NAME[:TAG]
5.知名镜像仓库
例如:docker pull quay.io/coreos/flannel:v0.10.0-amd64
https://promotion.aliyun.com/ntms/act/kuberbetes.html
搭建阿里云提供的私有仓库
可以在dockerhub上创建自己的仓库,也可以在阿里云上https://cr.console.aliyun.com/cn-hangzhou/repositories创建自己的docker仓库
如果仓库是私有的,拉取时需要先登录,如果是公共的可以直接拉取
搭建私有仓库distribution
docker提供的开源Registry很简单,只能作为存储镜像的仓库,没有额外的功能
1.yum安装distribution并使用
直接从extras源中下载安装
yum info docker-distribution
yum install docker-distribution.x86_64
启动docker-distribution
systemctl start docker-distribution.service
rpm -ql docker-distribution
查看distribution的yml文件,/var/lib/registry即为镜像存放在本机的位置,addr即为仓库名(ip:5000)
2.docker 上传下载默认只支持https协议,搭建的私有仓库是http协议,需要对Docker Daemon进行修改,添加insecure-registries,地址为Docker Registry IP + 端口号
3.上传镜像测试
修改镜像tag为仓库名后再上传
查看上传的镜像
搭建官方提供的私有仓库
registry镜像构建私有仓库
1.拉取镜像
2.启动registry容器
由于之前distribution仓库占用了5000端口
先停止distribution服务再启动
-p 5000:5000将容器的5000端口暴露在宿主机的5000端口
-v /data/registry:/var/lib/registry指定将镜像存储到宿主机的/data/registry
-d 后台运行容器
3.上传镜像测试
先将私有仓库认证为安全仓库(之前搭建distribution仓库已经设置过5000)
修改镜像tag后上传
如果之前没有设置仓库协议,上传镜像会提示要用https
将仓库进行web管理
1.拉取镜像
2.运行容器
-e环境变量
3.访问测试
Docker私有仓库harbor搭建(推荐使用)
docker官方提供的私有仓库registry,用起来虽然简单,但是在管理的功能上存在不足。harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。
注意:需要的依赖
安装harbor之前需要安装docker
由于harbot是基于Docker Registry V2版本,所以docker版本必须>=1.10.0 docker-compase >+1.6.0
下载最新版Docker Compose
curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose (仅参考,可手动到https://github.com/docker/compose进行下载)
右键复制链接到迅雷下载快些
# 对二进制文件应用可执行权限:
chmod +x /usr/local/bin/docker-compose
# 测试是否安装成功
docker-compose --version
离线安装docker-compose
下载离线安装包
wget -c https://github.com/goharbor/harbor/release/download/v2.0.2/harbor-offline-installer-v2.0.2.tgz
直接到github下载
可右键复制链接地址到迅雷下载
解压
tar xf harbor-offline-installer-v2.0.2.tgz -C /usr/local (不强制目录)
配置
解压目录下有一个harbor.yml.tmpl文件为配置模板
cp为yml文件进行配置
配置项:
修改3个地方:hostname,http端口,注释掉https(没有配置证书启动会报错)
hostname:设置为主机名
没有证书,把https协议注释
harbor_admin_password:默认登录密码(可配置)
data_volume:数据目录(可配置)
其他默认即可
安装
解压目录有安装脚本
可以看到第一步和第二部检查docker和docker-compose版本
第三步拉取镜像
报错容器名冲突(把之前运行的registry容器删除再重新安装)
安装完成
访问测试(hostname填写了主机名为域名也可以用主机名访问,windows需要做host解析)
默认账号admin
密码为Harbor12345(之前的yml也可以配置)
控制harbor服务
停止:在/usr/local/harbor (harbor的docker-compose.yml文件在此处)下执行docker-compose down
启动:在/usr/local/harbor下执行docker-compose up-d,-d表示后台运行
1.暂停/取消暂停harbor服务
docker-compose pause
docker-compose unpause
2.关闭/开启harbor服务
docker-compose stop
docker-compose start
docker-compose start-d
harbor使用:
上传下载镜像
1.修改docker配置,添加harbor仓库,重启docker
默认http改为https,地址为之前设置的hostname
设置hosts解析
重启docker
2.镜像打标签
访问的页面可以查看到镜像需要修改的仓库名
3.登录harbor,上传镜像
公共的,下载不需要账号密码
4.创建私有项目
默认有一个library,可以创建一个新的项目
私有的下载也需要账号密码
创建项目
创建用户
进入项目关联用户
创建完成
登录用户测试
上传镜像完成
5.harbor v2配置https
参考harbor官网配置即可