惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
量子位
月光博客
月光博客
人人都是产品经理
人人都是产品经理
U
Unit 42
S
SegmentFault 最新的问题
M
MIT News - Artificial intelligence
H
Help Net Security
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
MyScale Blog
MyScale Blog
美团技术团队
P
Proofpoint News Feed
Apple Machine Learning Research
Apple Machine Learning Research
D
Docker
B
Blog
大猫的无限游戏
大猫的无限游戏
V
Visual Studio Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog

Java技术经验分享

生产故障处理SOP分享 | Java技术经验分享 系统稳定性建设实践总结【转载】 | Java技术经验分享 valine访问leancloud国际版异常,评论失效修复 | Java技术经验分享 匆匆忙忙的2021 | Java技术经验分享 聊一下换工作 | Java技术经验分享 IoT系列(2):WIFI设备常见配网方案介绍 | Java技术经验分享 IoT系列(1):什么是物联网 | Java技术经验分享 Java8特性2 - StreamApi | Java技术经验分享 Java8特性1 - lambda表达式&函数式接口 | Java技术经验分享 设计模式(5)-适配器模式 | Java技术经验分享 设计模式(4)-建造者模式 | Java技术经验分享 设计模式(3)-原型模式与浅拷贝和深拷贝 | Java技术经验分享 设计模式(2)-工厂模式图文介绍 | Java技术经验分享 设计模式(1)-带你了解3类8种单例模式 | Java技术经验分享 Java时间处理5---Java8中时区相关类库介绍 | Java技术经验分享 Java时间处理4---Java8中LocalDate、LocalTime、LocalDateTime介绍 | Java技术经验分享 Java时间处理3---Java8中Instant、Duration、Period、Clock介绍 | Java技术经验分享 一些有意思的问答 | Java技术经验分享 Nacos系列博客说明 | Java技术经验分享 菜鸡程序员的2019年度总结 | Java技术经验分享 Java中“附近的人”实现方案讨论及代码实现 | Java技术经验分享 Java时间处理2----时区TimeZone类方法探究(Java8以前) | Java技术经验分享 Java时间处理1----Date和Calendar方法探究(Java8以前) | Java技术经验分享 FastJson中JSONString、JavaBean、JSONObject、JSONArray的转换关系及API示例 | Java技术经验分享 2019.11软考软件设计师归来心得体会及复习备考指南 | Java技术经验分享 你还没用过“约定式提交”吗?那你赶紧来补补知识吧 | Java技术经验分享 教你如何看懂UML中的类图及类图中的关系 | Java技术经验分享 设计模式总览 | Java技术经验分享 萌新入门Github请看这里,学不会远程教 | Java技术经验分享 Hexo的工作原理探究 | Java技术经验分享
Docker中私有仓库的搭建流程 | Java技术经验分享
文章作者: LarsCheng · 2019-04-25 · via Java技术经验分享

前言

docker中的仓库就像是我们平时用的git一样,git用来存放管理项目代码,而docker仓库则是专门用来存放管理docker镜像,既然git有公有、私有仓库之分,docker仓库同样不例外,本文介绍如何在docker中安装你专属的私有仓库。

环境说明

  • Centos7-64位虚拟机环境
  • Docker-CE-18.03.1-ce
  • 虚拟机ip地址:10.200.0.204

私有仓库搭建

拉取镜像

docker pull registry

启动仓库镜像

docker run -d \
--name myRegistry \
-p 5000:5000 \
-v /myRegistry:/var/lib/registry \
registry 

上面的命令大意是指,通过registry镜像来启动一个容器,并命名为myRegistry,开放容器端口5000并映射到宿主机5000端口,将容器中的/var/lib/registry目录挂载至宿主机/myRegistry目录下

查看容器运行结果

docker ps -a

此时,我们已经在docker中搭建好了一个专属的私有仓库,仓库地址为10.200.0.204:5000

下面测试提交一个镜像到私有仓库,此处以hello-world镜像为例

如果docker中暂无该镜像,可通过docker pull hello-world拉取
修改hello-world镜像的tag,标记一个修改后的版本

docker tag <image_name/image_id> <registry_ip>:5000/<image_name>:<version>

docker tag hello-world 10.200.0.204:5000/hello-world:v1.0.1 

将tag为v1.0.1的hello-world镜像提交到私有仓库

docker push <registry_ip>:5000/<image_name>:<version>

docker push 10.200.0.204:5000/hello-world:v1.0.1 

此时回提交失败出现如下错误 http: server gave HTTP response to HTTPS client:

出现这问题的原因是:Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是我们搭建的私有仓库在进行交互时默认使用的是HTTP服务,

由于仓库与客户端的https问题,需要修改/usr/lib/systemd/system/docker.service文件,

vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.211.153:5000

重新启动docker

systemctl daemon-reload 

systemctl restart docker

如果是虚拟机,需重启虚拟机。

重新提交hello-world镜像到私有仓库

docker push 10.200.0.204:5000/hello-world:v1.0.1 

查看仓库中的镜像列表

curl -X GET http://10.200.0.204:5000/v2/_catalog

查看仓库中某镜像的详细信息

curl -X GET http://10.200.0.204:5000/v2/hello-world/tags/list

从私有仓库pull镜像

docker pull <registry_ip>:5000/<image_name>:<version>

docker pull 10.200.0.204:5000/hello-world:v1.0.1

总结

至此,docker中私有仓库的安装,和基本使用就介绍完了,不妨在自己的linux机器中实践一下吧。