docker私服搭建与使用

"docker 私服 "

Posted by Mr Chang on October 16, 2017      @ Views:

docker Registry

  1. 这是什么

    是一种无状态,高度可扩展的服务器端应用程序,可存储和分发Docker映像。该注册表是开源的,在许可的Apache许可证下

  2. 为什么用它

    • 严格控制您的图像存储位置
    • 完全拥有您的图像分配管道
    • 将图像存储和分发紧密集成到您的内部开发工作流程中

安装

第一种方式

docker run -d -p 5000:5000 --name registry registry:2

查看私有镜像

http://ip:5000/v2/_catalog

第二种方式

nexus 3.X支持docker私有仓库

docker run -d -p 8081:8081 --name nexus sonatype/nexus3

登陆 admin admin123

选择 Repositories->Create repository->docker (hosted),http或者https端口对应下面的端口

测试

创建好以后更改 docker 参数,测试即可

# 增加非安全仓库
vim /usr/lib/systemd/system/docker.service
# 在 ExecStart  
--insecure-registry localhost:8888 
//之所以加这个参数是 因为 docker 默认不支持非https仓库。
关于https可以**[参考我的另外一篇博客](http://blog.jetbrains.org.cn/2017/09/07/%E5%85%8D%E8%B4%B9SSL%E8%AF%81%E4%B9%A6/)**
# 重启 docker
systemctl daemon-reload
systemctl restart docker

测试 push 和 pull 镜像

* 将镜像设置一个私服标签版本
	docker tag 镜像名 localhost:8888/镜像名
* 提交到docker私服
	docker push localhost:8888/镜像名
* 下载私服镜像到本地
	docker pull localhost:8888/镜像名

问题

docker 官方的 registry 可以直接推送上去 但是 nexus的registry 出 这种问题,nexus的官方文档这块的配置就简单提了下,还未找到解决方案,以后解决后再更新。

The push refers to a repository [127.0.0.1:8888/jenkins]
Put http://127.0.0.1:8888/v1/repositories/jenkins/: dial tcp 127.0.0.1:8888: getsockopt: connection refused

解决

因为我nexus是通过docker启动的,启动的时候只映射了8081端口,然后在添加docker仓库地址的时候,又添加了一个 8888 的http端口,但是并没有跟宿主机映射,自己吧自己坑了。

##鸣谢

nexus:https://help.sonatype.com/display/NXRM3

docker registry : https://docs.docker.com/registry/

docker hub :https://hub.docker.com/_/registry/