构建docker私有仓库

有了docker hub和阿里或者网易的镜像仓库等之后,为什么还有自己构建仓库呢?一是为了安全,二是为了内网能访问,三是如果是在内网,速度会更加快。本文我们就介绍如何构建自己的docker仓库。

环境准备

环境:两个装有Docker 17.09.0-ce 的centos7虚拟机
虚拟机一:192.168.1.175 用户开发机
虚拟机二:192.168.1.174 用作私有仓库

搭建私有仓库

在174机器上面

docker pull registry

下载完之后我们通过该镜像启动一个容器

docker run -d -p 5000:5000 registry

默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,

不过具体的情况还是要到容器里去看

先启动容器

docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry 
b4c21ca8cf8a23ea72e0471909742541ffc312ea5cf492486b5bdc3130179864

测试

接下来我们就要操作把一个本地镜像push到私有仓库中。首先在174机器下pull一个比较小的镜像来测试(此处使用的是busybox)。

docker pull busybox

接下来修改一下该镜像的tag。

docker tag busybox 192.168.1.174:5000/busybox

接下来把打了tag的镜像上传到私有仓库。

docker push 192.168.1.174:5000/busybox

接下来看到了错误:

The push refers to a repository [192.168.1.174:5000/registry]
Get https://192.168.1.174:5000/v1/_ping: http: server gave HTTP response to HTTPS client

这个问题可能是由于客户端采用https,docker registry未采用https服务所致。一种处理方式是把客户对地址“192.168.1.174:5000”请求改为http。

目前很多文章都是通过修改docker的配置文件“etc/systemconfig/docker",重启docker来解决这个问题,,根据网上创建此文件,并填入相应内容,重启docker无效果,仍然报此错误。

解决方法:

在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:

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

保存退出后,重启docker。问题解决。

docker push 192.168.1.174:5000/busybox

成功的。
在175机器上同样修改/etc/docker/daemon.json

docker pull 192.168.1.174:5000/busybox

拉取镜像成功,

猜你喜欢

转载自blog.csdn.net/fst438060684/article/details/84255118