搭建好了私有仓库,这样我们就可以在自己的仓库里存放自己的应用,同时也方便Kubernate的镜像获取,环境搭建过程中,需要注意几点:1、Docker的镜像仓库的存储地址在容器的/var/lib/registry 目录,2、启动仓库,需要给权限--privileged=true,3、需要开放https的协议问题(这是新版本的docker[1.12.6]解决方案,老版本的方法不一样)

1、下载镜像

#下载registry镜像
docker pull index.tenxcloud.com/docker_library/registry

#查看下载后的镜像
docker images 

#更名,将长明称更改为短名称的镜像
docker tag daocloud.io/library/registry:latest registry:latest

Docker之私有仓库搭建(Docker Registry)-yellowcong_centos

2、启动镜像服务器

–restart=always 表示自动启动容器
-v <宿主机目录>:<容器目录> 将宿主机的目录映射到容器上
–privileged=true 给容器加权限,这样上传就不会因为目录权限出错
/var/lib/registry 这个目录是docker私有仓库,镜像的存储目录

#创建数据存储的文件夹 ,将容器的/tem/registry目录映射到/docker/registry
mkdir /docker/registry

#启动容器,设定端口5000 ,然后映射文件夹,-v <宿主机目录>:<容器目录>
sudo docker run -d -p 5000:5000 --name registry-ser --restart=always --privileged=true  -v /docker/registry:/var/lib/registry  registry

#--restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启。 
#--restart的参数说明 
# always:无论容器的退出代码是什么,Docker都会自动重启该容器。 
# on-failure:只有当容器的退出代码为非0值的时候才会自动重启。
#另外,该参数还接受一个可选的重启次数参数,`--restart=on-fialure:5`表示当容器退出代码为非0时,Docker#会尝试自动重启该容器,最多5次。

#删除镜像
docker rm -f registry-ser

Docker之私有仓库搭建(Docker Registry)-yellowcong_重启_02

3、开放注册https协议

vim  /etc/docker/daemon.json

#添加配置文件
{
     
       "insecure-registries":["192.168.66.100:5000"]}

#重启服务
systemctl restart docker

Docker之私有仓库搭建(Docker Registry)-yellowcong_其他_03

4、推送镜像到仓库

#必须要先将镜像的名称给变成 域名或ip/镜像名
docker tag centos7:latest 192.168.66.100:5000/centos7

#推送到本地的仓库上
docker push 192.168.66.100:5000/centos7

Docker之私有仓库搭建(Docker Registry)-yellowcong_重启_04

上传成功后,可以看到推送成功

Docker之私有仓库搭建(Docker Registry)-yellowcong_重启_05

查看本地映射的目录/docker/register,可以看到映射的文件夹目录有centos的镜像数据了

Docker之私有仓库搭建(Docker Registry)-yellowcong_docker_06

5、下载本地仓库镜像

#删除本地上传的那个仓库,然后下载看看
docker rmi 192.168.66.100:5000/centos7

#下载本地仓库的镜像
docker pull 192.168.66.100:5000/centos7

Docker之私有仓库搭建(Docker Registry)-yellowcong_其他_07

下载成功
Docker之私有仓库搭建(Docker Registry)-yellowcong_其他_08

问题合计

1 镜像名称问题

You cannot push a “root” repository. Please rename your repository to docker.io// (ex: docker.io//centos7)
这个必须先将镜像给改名为ip/xxx的,才可以推送到服务器上

Docker之私有仓库搭建(Docker Registry)-yellowcong_重启_09

2 Https协议问题

Get https://192.168.66.100:5000/v1/_ping: http: server gave HTTP response to HTTPS client

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

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

vim  /etc/docker/daemon.json

#添加配置文件
{
     
       "insecure-registries":["192.168.66.100:5000"]}

Docker之私有仓库搭建(Docker Registry)-yellowcong_docker_10

3.Retrying in 4 seconds

上传镜像的时候,上传不上去,导致这个问题的原因是,权限不够,需要给这个容器扩展的特权–privileged=true

Docker之私有仓库搭建(Docker Registry)-yellowcong_centos_11