登陆dockerhub官网创建用户并登陆既可使用官方提供的dockerhub空间,增加自己的userID作为上传的根目录实现images的版本控制
https://hub.docker.com/
http://note.youdao.com/noteshare?id=54dad70770ed572d8ba05e35f05104d2&sub=A354A2FC89EB4F1C81302EF5A186FB8F
创建后在dockers服务器上使用docker login进行登陆,登陆后即可进行仓库的上传下载动作
1、使用官方镜像创建
配置文件
1)在安装有docker服务的服务器上运行:
运行结果如下:
2)docker ps (查看正在运行中的docker容器)
3)由于第一步创建时没有加--name参数,所以容器创建会产生一个随机name,为了管理方便对容器进行重命名
docker rename keen_banach registry
4)查看容器对于的日志
docker logs registry(容器名或ID)
5)通过get访问查看容器运行是否正常
相当于浏览器直接访问返回的结果(这部分返回值是由registry容器镜像制作时dockerfile中引用决定的)
6)查看宿主机上的挂载位置:(新增了一个*.db文件)
内容如下:(是一条sqlite的SQL语句)
7)在本地测试上传一个镜像:
#docker images (查看本地的镜像文件)
#docker tag rancher/agent:v1.2.11 10.234.2.182:5000/rancher-agent:v1(对其中一个镜像重命名)
v2版本的dir路径:/var/lib/registry
解决方法
或者docker降级,或者registry升级到v2版本,并且重新配置,v2版本相交于v1更加合理,但是配置也更加繁琐
8)最终解决方式使用registry v2版本代替
9)上传镜像
客户端和服务端上传均会报错,报错信息:
The push refers to repository [132.232.204.252:5000/rancher-agent]
Get https://132.232.204.252:5000/v2/: http: server gave HTTP response to HTTPS client
大致意思就是客户端用https的请求服务端返回了http的返回
因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报https错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。
解决方法有两种思路:
一、本地配置信任
修改docker.service文件中的start启动项
路径一般为:/usr/lib/systemd/system/
vim /usr/lib/systemd/system/docker.service
ExexStart=/usr/bin/dockerd -H unix:// 在改行后增加需要信任的服务端地址
--insecure-registry 127.0.0.1:5000 --insecure-registry 132.232.204.252:5000
修改后需要重新加载deamon
重启docker服务
#systemctl daemon-reload
#systemctl restart docker.service
查看docker info 修改前后对比增加了信任的注册registries
再进行上传即可成功
查看仓库web中也新增了镜像
二、在服务端配置nginx代理,增加证书
坑点:
1、docker的发展有两部分,一是在2017年3月之前docker一直使用的版本命名方式是docker1.xx,这种方式的最后一个版本是docker1.13.1版本,在2017年3月,改用年分命名方式,第一版docker17.03,docker版本和redistry的结合部分在docker1.3版本发生一些变化,因为registry v2版本的出现
2、registry 建议直接使用v2版本,0.9.1是最后一个v1版本,虽然docker有向前兼容性,但是registry的v1和v2项目是完全不同的两个项目,并且不具有兼容性
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。