CentOS 7.X 中Docker搭建本地仓库registry 以及报错解决

去docker hub下载镜像比较慢,而且自己内部的镜像一般要求对速度和安全性要求较高,于是就可以考虑搭建本地仓库registry来实现,下边简单介绍下步骤。
环境:centos 7.2
1,安装docker
yum install docker -y
systemctl start docker.service
systemctl enable docker.service

2,搭建仓库
下载registry
docker search registry

[root@docker5 registry]# docker search registry
INDEX       NAME                                                DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/registry                                  Containerized docker registry                   894       [OK]      
docker.io   docker.io/konradkleine/docker-registry-frontend     Browse and modify your Docker registry in ...   99                   [OK]
docker.io   docker.io/atcol/docker-registry-ui                  A web UI for easy private/local Docker Reg...   79                   [OK]
docker.io   docker.io/distribution/registry                     WARNING: NOT the registry official image!!...   38                   [OK]
docker.io   docker.io/samalba/docker-registry                                                                   36                   [OK]
docker.io   docker.io/hyper/docker-registry-web                 Web UI for private docker registry v2.          28                   [OK]
docker.io   docker.io/marvambass/nginx-registry-proxy           Docker Registry Reverse Proxy with Basic A...   27                   [OK]
docker.io   docker.io/h3nrik/registry-ldap-auth                 LDAP and Active Directory authentication p...   12                   [OK]
docker.io   docker.io/jhipster/jhipster-registry                JHipster Registry, based on Netflix Eureka...   6                    [OK]
[root@docker5 registry]# docker pull docker.io/registry
等待下载完成。
搭建仓库:

docker run -d -p 5000:5000 -v /home/registry:/tmp/registry registry
默认情况下docker会将仓库存放于容器的 /tmp/registry 目录下,可以通过 -v 参数来将镜像文件保存到我们指定的路径。
查看是否运行:

[root@docker5 registry]# netstat  -tunlp | grep  5000
tcp6       0      0 :::5000                 :::*                    LISTEN      3791/docker-proxy  
更改一个标签:

docker tag  mysql:latest 192.168.2.75:5000/mysql20160615
上传测试镜像到本地仓库:

docker push 192.168.2.75:5000/mysql20160615
这里如果是已经创建了https可以操作成功过,如果是http会报错。原因是Docker从1.3.X之后默认docker registry使用的是https,所以当用docker pull命令下载远程镜像时,如果远程docker registry是非https的时候就会报上面的错误。解决办法:
vi /etc/sysconfig/docker

OPTIONS='--selinux-enabled --insecure-registry 192.168.2.75:5000' 其中--insecure-registry 192.168.2.75:5000是自己添加的。
设置以后重启docker和对应容器,重新push一下,成功。

[root@docker5 registry]# docker push 192.168.2.75:5000/testimage
The push refers to a repository [192.168.2.75:5000/testimage] (len: 1)
Sending image list
Pushing repository 192.168.2.75:5000/testimage (1 tags)
3690474eb5b4: Image successfully pushed
b48a20c39b28: Image successfully pushed
c79ebe41b35a: Image successfully pushed
2a332da70fd1: Image successfully pushed
Pushing tag for rev [2a332da70fd1] on {http://192.168.2.75:5000/v1/repositories/testimage/tags/latest}
本地仓库以及url查看状态:

[root@docker5 registry]# ll
total 4
drwxr-xr-x. 6 root root 4096 Jun 22 14:27 images
drwxr-xr-x. 3 root root   20 Jun 22 14:27 repositories
[root@docker5 registry]# du -sh  ./*
68M ./images
16K ./repositories
[root@docker5 registry]# curl  http://192.168.2.75:5000/v1/search
{"num_results": 1, "query": "", "results": [{"description": "", "name": "library/testimage"}]}[root@docker5 registry]#
本地仓库镜像下载测试验证:
进入另外一台内网机器进行镜像下载测试,比如我的另外一台测试机:192.168.2.76,操作如下:
首先进入修改docker配置文件并重启

OPTIONS='--selinux-enabled --insecure-registry 192.168.2.75:5000' 其中--insecure-registry 192.168.2.75:5000是自己添加的本地仓库地址。
pull过程如下:

[root@docker6 ~]# systemctl  restart docker
[root@docker6 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
[root@docker6 ~]# docker pull  192.168.2.75:5000/testimage
Using default tag: latest
2a332da70fd1: Download complete
3690474eb5b4: Download complete
b48a20c39b28: Download complete
c79ebe41b35a: Download complete
Status: Downloaded newer image for 192.168.2.75:5000/testimage:latest
192.168.2.75:5000/testimage: this image was pulled from a legacy registry.  Important: This registry version will not be supported in future versions of docker.
 
[root@docker6 ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
192.168.2.75:5000/testimage   latest              2a332da70fd1        2 weeks ago         196.7 MB
 没有问题,本地仓库搭建成功。

时间: 2024-10-30 12:54:01

CentOS 7.X 中Docker搭建本地仓库registry 以及报错解决的相关文章

Linux中使用wget下载https类型文件报错解决方法

般我们远程调用下载文件直接用wget就可以,一般文件路径类型是http.如果有遇到是https就会下载出错,稍微不注意的新手朋友可能还认为是数据源出现问题.因为大脑不好用,所以刚才在有遇到这样问题的时候老左就顺带做一个记录,以便下次遇到这样的问题,以及有遇到同类问题的网友可以参照使用. 出现的错误大同小异类似上面的界面演示一样.其实我们仔细根据提示可以解决问题,只需要在wget后面加上--no-check-certificate就可以,需要一个认证下载指令而已. 比如我们可以修改成:  代码如下

eclipse中,使用tomcat插件启动tomcat报错

问题描述 eclipse中,使用tomcat插件启动tomcat报错 具体错误: SEVERE: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [/manager] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) at org.apache.catalin

javaweb-在ssh 中 用ServletActionContext获取session时启动报错

问题描述 在ssh 中 用ServletActionContext获取session时启动报错 ServletActionContext.getRequest().getSession(); 怎么才能在启动的时候就有ServletActionContext,而不用在ActionSupport处理请求时在获取 解决方案 是报空指针吗? 没有请求时 ServletActionContext.getRequest() 为null 解决方案二: http://blog.csdn.net/suncaoyo

java中网络编程关于使用ObjetInputStream传输报错的问题,求大神指点

问题描述 java中网络编程关于使用ObjetInputStream传输报错的问题,求大神指点 以下贴出来的代码为通过ObjectInputStream(OutputStream)在客户端与服务器端之间交互时传输的对象,提供的图片中一个是客户端的代码片段,一个是服务器端的代码片段. 现在问题出在当客户端输完账号密码点击确定时,客户端卡死(应该是线程阻塞).服务器端抛出异常 :java.lang.ClassNotFoundException: com.wish.data.TransferObjec

svn-在Myeclipse中保存代码时,SVN总是报错,已百度,答案五花八门。求指导 谢谢!

问题描述 在Myeclipse中保存代码时,SVN总是报错,已百度,答案五花八门.求指导 谢谢! 写完一段代码按保存(CTRL+S)时 总是报这样的错误 解决方案 http://zhidao.baidu.com/link?url=gLO2oBMgYsBRCUQVbUzkuWP3geLbG-_cBa6bdDSnxrVNkrNp8rnli7U0mGz-6SW2_qccL6tVVNPepFEaoCfIu6rApe2lVmVFlKGBAbDlCJ_ http://zhidao.baidu.com/lin

c++-C++ functional中的template在编译的时候报错

问题描述 C++ functional中的template在编译的时候报错 template模板代码为:1 template2 class _Arg0> _Call_wrapper<_Callable_pmd<_Rx _Arg0::*const _Arg0> 3 mem_fn(_Rx _Arg0::*const _Pmd)4 { // return data object wrapper5 return (_Call_wrapper<_Callable_pmd<_Rx

急!用jdbc中executeQuery()方法执行查询为什么在程序中停顿很长时间,甚至报错。

问题描述 急!用jdbc中executeQuery()方法执行查询为什么在程序中停顿很长时间,甚至报错. 程序中的sql如以下: select t3.*,t1.costPrice as costP,t1.retailPrice as retailP,t1.basicPricing as basicP from goodsGroupCopy t1 left join groupCopyGoods t2 on t1.id = t2.goodsGroupCopyId left join goods t

在CentOS版本的Linux上结合Hadoop平台安装mahout报错

问题描述 在CentOS版本的Linux上结合Hadoop平台安装mahout报错 在CentOS版本的Linux上结合Hadoop平台安装mahout运行时显示错误JAVA__HOME is not set怎么解决?Hadoop平台是1.2.1版本的:mahout是0.9版本的.如图是我的/etc/profile文件. 解决方案 http://blog.sina.com.cn/s/blog_5988cec90101g1p0.html 解决方案二: 你那图的最后一句javahome怎么又给设置成

android studio 引用easeui 中改成new ViewCompat().getX 还是报错

问题描述 android studio 引用easeui 中改成new ViewCompat().getX 还是报错,我在ViewCompat 这个类中根本没有看见有getX这个方法求大神看下解决 解决方案 在easeui的bulid.gradle中将v4版本更新到23以上试试