docker使用registry搭建本地私有仓库
参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/
和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库。
使用私有仓库有许多优点:
- 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
- 提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。
接下来我们就大致说一下如何在本地搭建私有仓库。
目前Docker Registry已经升级到了v2,最新版的docker已不再支持v1。Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。此文档是在v1的基础上写的,如果需要安装registry v2,只需下载registry:2.2即可,或者可以下载后面的安装脚本运行安装。
环境准备:
环境:两个装有Docker的CentOS 7.2 虚拟机
服务器1:192.168.68.14 ------用户开发机
服务器2:192.168.68.25 ------用作私有仓库
此处我们准备了两个虚拟机,分别都安装了Docker,其中14机器用作开发机,25机器用作registry私有仓库机器。环境准备好之后接下来我们就开始搭建私有镜像仓库。
搭建私有仓库
首先在25机器上下载registry镜像
$ docker pull registry
下载完之后我们通过该镜像启动一个容器
$docker run -d -p 5000:5000 registry
默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,如下:
$docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

可以看到我们启动了一个容器,地址为:192.168.68.25:5000。
测试
接下来我们就要操作把一个本地镜像push到私有仓库中。首先在25机器下pull一个比较小的镜像来测试(此处使用的是busybox)。
$ sudo docker pull busybox
接下来修改一下该镜像的tag。
$ sudo docker tag busybox 192.168.112.136:5000/busybox

接下来把打了tag的镜像上传到私有仓库。
$ sudo docker push 192.168.68.25:5000/busybox
有报错,如下图:

因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改docker启动配置文件(此处是修改25机器的配置)Centos7下配置文件地址为:/etc/sysconfig/docker,在其中增加--insecure-registry 192.168.68.25:5000如下所示:
$ vim /etc/sysconfig/docker
修改完之后,重启Docker服务。
$ service docker restart
重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上。
$ docker push 192.168.68.25:5000/busybox
发现推送失败,报错如下:
解决思路:查看registry容器是否启动,docker ps 发现真没有启动,因为刚刚重启了docker服务,然后这个容器没有加到随docker启动而启动
步骤:docker start registry
再次推送:docker push 192.168.68.25:5000/busybox
成功如图:

可以看到镜像已经push到私有仓库中去了。
接下来我们删除本地镜像,然后从私有仓库中pull下来该镜像。
docker rmi 192.168.68.25:5000/busybox
docker pull 192.168.68.25:5000/busybox

到此就搭建好了Docker私有仓库。上面搭建的仓库是不需要认证的,我们可以结合nginx和https实现认证和加密功能。
管理仓库中的镜像
查询
如果我们想要查询私有仓库中的所有镜像,使用docker search命令:
# docker search registry_ip:5000/
如果要查询仓库中指定账户下的镜像,则使用如下命令:
# docker search registry_ip:5000/account/
同时也可以指定镜像查询。
删除
目前尚未找到方法删除私有仓库中的镜像,尝试过直接从仓库存储目录中删除镜像文件,但是并不能成功删除镜像。
docker使用registry搭建本地私有仓库的更多相关文章
- Docker容器之搭建本地私有仓库
Docker容器之搭建本地私有仓库 本地私有仓库搭建的具体步骤 首先下载 registry 镜像 docker pull registry 在 daemon.json 文件中添加私有镜像仓库的地址并重 ...
- 搭建docker镜像仓库(一):使用registry搭建本地镜像仓库
目录 一.系统环境 二.前言 三.使用registry搭建私有镜像仓库 3.1 环境介绍 3.2 k8smaster节点配置镜像仓库 3.3 k8sworker1节点配置从私有仓库上传和拉取镜像 3. ...
- Docker基础-搭建本地私有仓库
1.使用registry镜像创建私有仓库 安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境: docker run -d -p 5000:5000 regist ...
- docker 搭建本地私有仓库
1.使用registry镜像创建私有仓库 安装docker后,可以通过官方提供的 registry 镜像来简单搭建一套本地私有仓库环境: docker run -d -p : registry: 这将 ...
- Docker搭建本地私有仓库
安装部署一个私有的Docker Registry是引入.学习和使用Docker这门技术的必经之路之一.尤其是当Docker被所在组织接受,更多人.项目和产品开始接触和使用Docker时,存储和分发自制 ...
- Docker本地私有仓库实战
Docker仓库主要用于存放Docker镜像,Docker仓库分为公共仓库和私有仓库,基于registry可以搭建本地私有仓库,使用私有仓库的优点如下: 1)节省网络带宽,针对于每个镜像不用去Dock ...
- 搭建docker镜像仓库(二):使用harbor搭建本地镜像仓库
目录 一.系统环境 二.前言 三.Harbor 四.使用harbor搭建私有镜像仓库 4.1 环境介绍 4.2 k8smaster节点安装配置harbor 4.2.1 安装harbor离线包 4.2. ...
- 实战maven私有仓库三部曲之三:Docker下搭建maven私有仓库
本章是<实战maven私有仓库>系列的第三篇,在前两章中,我们先在linux搭建maven私有仓库,然后在开发环境使用此仓库,本章我们在docker下快速搭建maven私有仓库,然后像前面 ...
- Kubernetes本地私有仓库配置
实验环境 master 10.6.191.181 node1 10.6.191.182 node2 10.6.191.183 本地私有仓库 10.6.191.184 一.安装本地私有仓库 1.安装do ...
随机推荐
- HDU1160 FatMouse's Speed —— DP
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1160 FatMouse's Speed Time Limit: 2000/1000 MS ...
- 并不对劲的p3676:小清新数据结构题
题目大意 有一棵有\(n\)(\(n\leq 2*10^5\))个点的树,要进行\(q\)(\(q\leq 2*10^5\))次操作,每次操作是以下两种中的一种: 1.修改一个点的点权 2.指定一个点 ...
- Codeforces 633H. Fibonacci-ish II
题目大意: 一个数列 q次询问 每次询问l r 将数列中l-r的位置排序去重后的数列成为b 输出 sigma b i * F i (其中F i为斐波那契数列中的第i项) 思路: 由于要去重 考虑权值线 ...
- BZOJ_4184_shallot_线段树按时间分治维护线性基
BZOJ_4184_shallot_线段树按时间分治维护线性基 Description 小苗去市场上买了一捆小葱苗,她突然一时兴起,于是她在每颗小葱苗上写上一个数字,然后把小葱叫过来玩游戏. 每个时刻 ...
- python3中urllib的基本使用
urllib 在python3中,urllib和urllib2进行了合并,现在只有一个urllib模块,urllib和urllib2的中的内容整合进了urllib.request,urlparse整合 ...
- #!/usr/bin/env ruby 与 #!/usr/bin/ruby 的区别(copy)
[说明:资料来自http://blog.csdn.net/wh_19910525/article/details/8040494] 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执 ...
- Swift4 类与继承, 类型转换, 类型判断
创建: 2018/03/05 完成: 2018/03/07 更新: 2018/03/09 完善标题 [Swift4 类与继承, 类型转换] -> [Swift4 类与继承, 类型转换与判断] 补 ...
- bzoj 1880: [Sdoi2009]Elaxia的路线【spfa+拓扑排序】
有趣啊 先spfa分别求出以s1,t1,s2,t2为起点的最短路,然后把在s1-->t1或者s2-->t2最短路上的边重新建有向图,跑拓扑最长路即可 #include<iostrea ...
- 我的周记6——"不破楼兰誓不还“
周6 2019-06-13 天气:雨 这张照片是我那天中午回家的时候拍的,下着中雨.这是谁的孩子,又是谁的妈妈.看到这样的场景心里还是蛮有触动的, 因为我现在是离家千里的孩子,思念着故乡也想念着亲人 ...
- js 编码详解
今天在整理 js编码解码方法时,在网上搜资料,发现一篇文章讲的不错,讲解的非常简单明了,于是乎就想转载过来,却发现无法转载到博客园,最后只能卑鄙的摘抄过来.js编码解码就是将一些对URL和数据库敏感的 ...