Docker 自建私有Registry 私有仓库
说明
记录搭建 docker 私有仓库步骤
介绍
docker镜像可以托管到dockerhub中,跟代码库托管到github是一个道理。但如果我们不想把docker镜像公开放到dockerhub中,只想在部门或团队内部共享docker镜像,能不能项gitlab一样在搭建私有的仓库呢?答案是肯定的,docker也支持将镜像存到私有仓库。下面将验证docker原生的仓库和开源的私用仓库,并分析其特点。
原理
Docker模型的核心部分是有效的利用分层镜像机制,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。不同的Docker容器可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。由于最终镜像最终是以tar.gz的方式静态存储在服务器端,这种存储适用于对象存储而不是块存储。
一次docker pull (即用户从客户端向仓库拉镜像),发生的交互
- 客户端向索引请求ubuntu镜像下载地址
- 索引回复:ubuntu所在仓库A、 ubuntu镜像的校验码(Checksum)和所有层的Token
- 客户端向仓库A请求 ubuntu的所有层(仓库A负责存储ubuntu,以及它所依赖的层)
- 仓库A向索引发起请求,验证用户Token的合法性
- 索引返回这次请求是否合法
- 客户端从仓库下载所有的层,仓库从后端存储中获取实际的文件数据,返给客户端
搭建
本次直接使用yum
安装 docker-registry
[root@registory ~]# yum install docker-registry -y
[root@registory ~]# rpm -ql docker-distribution # 查看安装包详细信息
/etc/docker-distribution/registry/config.yml # 配置文件
/usr/bin/registry # 启动明命令
/usr/lib/systemd/system/docker-distribution.service # 服务启动脚本
/usr/share/doc/docker-distribution-2.6.2
/usr/share/doc/docker-distribution-2.6.2/AUTHORS
/usr/share/doc/docker-distribution-2.6.2/CONTRIBUTING.md
/usr/share/doc/docker-distribution-2.6.2/LICENSE
/usr/share/doc/docker-distribution-2.6.2/MAINTAINERS
/usr/share/doc/docker-distribution-2.6.2/README.md
/var/lib/registry # Docker 镜像存放的目录
查看配置文件
[root@registory ~]# cat /etc/docker-distribution/registry/config.yml
version: 0.1
log:
fields:
service: registry # 服务名称
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /var/lib/registry # 镜像存放目录,可以根据情况修改
http:
addr: :5000 # 端口,这里需要根据实际情况来修改为 80 或者 443
这里先不进行修改,简便安装使用。
启动
[root@registory ~]# systemctl start docker-distribution
[root@registory ~]# ps aux|grep registry
root 20843 0.0 0.8 307476 17476 ? Ssl 13:31 0:00 /usr/bin/registry serve /etc/docker-distribution/registry/config.yml
上传和下载镜像测试
测试上传镜像
注意: 默认情况下,docker使用的是https方式上传和下载,本次是用的是5000端口,所以需要手动配置一下
[root@registory ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://0tb09e4d.mirror.aliyuncs.com"], # 镜像加速
"insecure-registries": ["registry.kubernetes:5000"] # 这里列表中可配置多个
}
说明:上述中的registry.kubernetes
手动写了hosts文件,所以需要注意,在需要使用该registry的机器上,都需要能解析。
[root@registory ~]# grep registry /etc/hosts
192.168.1.120 registry registry.kubernetes
然后随意上传一个打包好的镜像
[root@registory registry]# docker push registry.kubernetes:5000/myweb:v0.3-6
The push refers to repository [registry.kubernetes:5000/myweb]
cc7d034b0d81: Pushed
b9a751a05ed2: Pushed
076c58d2644f: Pushed
b2cbae4b8c15: Pushed
5ac9a5170bf2: Pushed
a464c54f93a9: Pushed
v0.3-6: digest: sha256:016196f127de6b4b726f0ea466216567903ad8c4820cf37b62559ea78d7f2ec3 size: 1567
测试下载镜像
也需要手动配置hosts解析和docker的配置文件修改
[root@node03 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://0tb09e4d.mirror.aliyuncs.com"], # 镜像加速
"insecure-registries": ["registry.kubernetes:5000"] # 这里列表中可配置多个
}
[root@node03 ~]# grep registry /etc/hosts
192.168.1.120 registry registry.kubernetes
操作查看
[root@node03 ~]# docker image pull registry.kubernetes:5000/myweb:v0.3-6
v0.3-6: Pulling from myweb
bdf0201b3a05: Pull complete
3d0a573c81ed: Pull complete
8129faeb2eb6: Pull complete
3dc99f571daf: Pull complete
c77cad417662: Pull complete
f8733d9c3f79: Pull complete
Digest: sha256:016196f127de6b4b726f0ea466216567903ad8c4820cf37b62559ea78d7f2ec3
Status: Downloaded newer image for registry.kubernetes:5000/myweb:v0.3-6
registry.kubernetes:5000/myweb:v0.3-6
[root@node03 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.kubernetes:5000/myweb v0.3-6 63478b4469e1 21 hours ago 16MB
Docker 自建私有Registry 私有仓库的更多相关文章
- Ubuntu 搭建docker registry 私有仓库
一.为什么要搭建 docker 私有仓库 原因有几个: 项目需要,不希望将项目放到 docker hub 上. 环境需求,考虑网络.效率的问题,希望在私有服务器上建立自用的仓库,提高便利性和访问速度. ...
- 快速搭建Docker Registry私有仓库
前提条件: 服务器已经安装Docker(我的服务器是CentOS 7) 服务器已经安装Docker Compose 满足以上条件时就可以开始搭建了: 1. 生成用户密码文件:(运行下面命令后会在当前目 ...
- Docker registry 私有仓库镜像查询、删除、上传、下载 shell
#Docker官方私有仓库registry #官方只提供了API接口,不方便使用,就写了个shell #docker-registry安装配置http://www.cnblogs.com/elvi/p ...
- docker registry 私有仓库 安装配置、查询、删除
#++++++++++++++++++++++++++++++ #docker-registry 私有仓库 #搜索,下载register镜像 docker search registry docker ...
- Docker registry私有仓库(七)
Docker registry私有仓库搭建基本几步流程(采用nginx+认证的方式) 1. 申请免费的ssl证书 https://buy.wosiqn.com/free 2. 设置nginx ssl证 ...
- 搭建docker registry私有镜像仓库
搭建docker registry私有镜像仓库 一.安装docker-distribution yum install -y docker-distribution 安装完成后,启动服务: syste ...
- Docker系列08—搭建使用私有docker registry
本文收录在容器技术学习系列文章总目录 1.了解Docker Registry 1.1 介绍 registry 用于保存docker 镜像,包括镜像的层次结构和元数据. 启动容器时,docker dae ...
- 7.docker私有registry
一.Docker Registry分类 Registry用于保存docker镜像,包括镜像的层次结构和元数据.都是基于https或者http工作的. 用户可自建Registry,也可使用官方的Dock ...
- docker进阶-搭建私有企业级镜像仓库Harbor
为什么要搭建私有镜像仓库 对于一个刚刚接触Docker的人来说,官方的Docker hub是用于管理公共镜像.既然官方提供了镜像仓库我们为什么还要去自己搭建私有仓库呢?虽然也可以托管私有镜像.我们 ...
随机推荐
- 阿里六面,挂在hrg,我真的不甘心!
前言最近跟一位朋友聊天,福报场-阿里是大部分程序员的梦想.这位老哥梦想进入阿里很久了,连续两年面试阿里不同bu,有几次是技术面挂,最冤的一次是技术6面了,连P10大老板都面了,但是挂在了hrg. 我以 ...
- 小白学 Python(16):基础数据类型(函数)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 根据多个成对的cron表达式生成的时间段,合并
场景:数据库一张表,有个startcron 和endcron 两个字段,根据表达式计算今天的所有时间段. 例:startcron :0 30 20 ? * * endcron :0 30 21 ? * ...
- 对比讲解lambda表达式与传统接口函数实现方式
在本号之前写过的一些文章中,笔者使用了lambda表达式语法,一些读者反映说代码看不懂.本以为java 13都已经出了,java 8中最重要特性lambda表达式大家应该都掌握了,实际上还是存在大量的 ...
- [考试反思]阶段性总结:NOIP模拟测试7~13
苟且Rank#1.第二次分机房结束. 得到了喘息一会的权利. 在最后两场考试中大脸skyh慷慨舍弃264分让出Rank#1的故事也十分感人 然而还是有很多东西值得思考. 虽说是反思,但是还是有一些地方 ...
- CSPS模拟测试59
这场考得我心态爆炸......... 开场T1只会$n^{2}$,然后发现bfs时每个点只需要被更新一次,其他的更新都是没用的. 也就是说,我们可以只更新还没被更新的点? 于是我先YY了一个链表,发现 ...
- NOIP模拟13
上来看了一遍题,发现T2似乎不可做...暴力只给20分怎么玩? T1感觉是要离线处理,但是看了一会发现不会,遂决定先打暴力.然后去把T2 20分拿了,回去看T1,手摸了一下样例,成功推出式子,5分钟码 ...
- Opencv python(3)| cv. VideoCapture.get() 参数介绍
cv2.VideoCapture.get () 的 (0-18)参数 cv2.VideoCapture.get(0) 视频文件的当前位置(播放)以毫秒为单位 cv2.Video ...
- Mybatis自定义TypeHandler解决特殊类型转换问题
我们知道,Java和MySQL中的数据类型是不同的,Java中除了基本数据类型,还有对象. 有时候使用MySQL存储数据,或者从MySQL中读取数据时,会有一些特殊需求
- mvn上传dubbo jar到nexus
第一种方式: mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=j ...