简介

仓库(Repository)是集中存放镜像的地方,又分为公共镜像和私有仓库。

当我们执行docker pull xxx的时候,它实际上是从registry.docker.com这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目上传到公共仓库进行管理,所以为了更多管理镜像,Docker允许我们搭建本地私有仓库。

私有仓库最常用的就是registryHarbor两种,那接下来详细介绍如何搭建私有仓库。

搭建registry私有仓库

Docker 官方提供了一个搭建私有仓库的镜像registry,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了。代码如下:

1、下载镜像
docker pull registry:2 2、运行容器
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2

registry服务默认将上传的镜像保存在容器的/var/lib/registry,使用-v参数将容器的/var/lib/registry目录映射到本地/opt/registry目录。即可实现将镜像保存到宿主机/opt/registry目录。

浏览器访问http://宿主机IP:5000/v2,显示“{}” 说明registry运行正常。


上传镜像到私有仓库

现在通过push将镜像上传至私有仓库,具体步骤如下:

1、下载docker hub官方镜像
docker pull ubuntu 2、将镜像标志为要推送到私有仓库:
docker tag ubuntu:latest 10.43.187.251:5000/myubuntu:v1 3、上传镜像到私有仓库
[root@qll251 ~]# docker push 10.43.187.251:5000/myubuntu:v1
The push refers to repository [10.43.187.251:5000/myubuntu]
Get https://10.43.187.251:5000/v2/: http: server gave HTTP response to HTTPS client

注意,上传镜像时报错了:http: server gave HTTP response to HTTPS client

出现这个问题原因是:Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有仓库交互时出现以上错误。

解决办法:

1、编辑 /etc/docker/daemon.json,在文件中写入:

{ "insecure-registries":["10.43.187.251:5000"] }

2、重启生效:

systemctl daemon-reload
systemctl restart docker

再次上传,问题解决:

docker pull 10.43.187.251:5000/myubuntu:v1

客户端下载私有镜像

我们在另外一台docker机器上,进行pull测试:

[root@qll252 ~]# docker pull 10.43.187.251:5000/myubuntu:v1
Trying to pull repository 10.43.187.251:5000/myubuntu ...
Get https://10.43.187.251:5000/v1/_ping: http: server gave HTTP response to HTTPS client

会发现跟前面上传镜像报了同样的错误。

解决方法同上:

再次从私有仓库中下载镜像:

[root@qll252 ~]# docker pull 10.43.187.251:5000/myubuntu:v1
Trying to pull repository 10.43.187.251:5000/myubuntu ...
v1: Pulling from 10.43.187.251:5000/myubuntu
d51af753c3d3: Pull complete
fc878cd0a91c: Pull complete
6154df8ff988: Pull complete
fee5db0ff82f: Pull complete
Digest: sha256:5747316366b8cc9e3021cd7286f42b2d6d81e3d743e2ab571f55bcd5df788cc8
Status: Downloaded newer image for 10.43.187.251:5000/myubuntu:v1

验证通过,到此已完成私有仓库的搭建工作了。

说明:在后续教程我们学习到docker-compose时,再为大家介绍企业级Harbor私有仓库及搭建过程。

最新文章

  1. TCP三次握手图解
  2. 禁止页面后退JS(兼容各浏览器)
  3. 十条jQuery代码片段助力Web开发效率提升
  4. C#命名空间的嵌套
  5. 闭包->类的实例数组排序
  6. C++ 学习笔记(3) —— 內联函数
  7. Linux下tomcat部署
  8. strcpy函数实现
  9. iOS字符串加密至MD5&及获取文件MD5
  10. 制作java可执行程序的方法
  11. 2014年辛星完全解读Javascript第六节 对象
  12. JavaScript 踩坑心得— 为了高速(下)
  13. Jquery 中 $('obj').attr('checked',true)失效的几种解决方案
  14. UVa 12683 Odd and Even Zeroes(数论+数字DP)
  15. IDEA内存异常问题
  16. BZOJ_3129_[Sdoi2013]方程_组合数学+容斥原理
  17. 阿里云短信服务调用例子-Python
  18. Series 和 Dataframe 的 rank 方法
  19. java web中java和python混合使用
  20. 洛谷 p1044 栈 【Catalan(卡特兰数)】【经典题】

热门文章

  1. springboot-@EventListener简单用法
  2. Homebrew安装环境
  3. LIKE 声明中的%和_是什么意思?
  4. 纯干货数学推导_傅里叶级数与傅里叶变换_Part4_傅里叶级数的复数形式
  5. 顺利通过EMC实验(6)
  6. H5进阶篇--实现微信摇一摇功能
  7. dotnet new 命令笔记
  8. MFC软件国际化的几个问题及其解决方案
  9. Python中关于进度条的6个实用技巧
  10. python的编译和解释