docker私有仓库registry部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker私有仓库registry部署相关的知识,希望对你有一定的参考价值。

准备环境:两个装有Docker(版本1.12)的虚拟机
虚拟机一:192.168.2.55 用户开发机
虚拟机二:192.168.2.10 用作私有仓库

搭建私有仓库

首先在10机器上下载registry镜像

$ docker pull registry

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

$ sudo docker run -d --restart=always -p 5000:5000 -v /export/data/docker/registry:/tmp/registry registry

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

在55机器下pull一个比较小的镜像来测试(此处使用的是alpine)

$ docker pull alpine


修改一下该镜像的tag

$ docker tag alpine 192.168.2.10:5000/alpine

此时还不能push到10私服上,需要在启动docker server时增加启动参数
修改docker启动配置文件(此处是修改55机器的配置)

Ubuntu下配置文件地址为:sudo vi /etc/init/docker.conf
CentOS下配置文件地址为:sudo vi /etc/sysconfig/docker

找到# INSECURE_REGISTRY=--insecure-registry改为如下:
INSECURE_REGISTRY=--insecure-registry 192.168.2.10:5000

修改完之后,重启Docker服务

$ sudo service docker restart

重启完之后运行推送命令,把本地镜像推送到私有服务器上

$ docker push 192.168.2.10:5000/alpine

可以看到镜像已经push到私有仓库中去了,接下来我们删除本地镜像,然后从私有仓库中pull下来该镜像

删除了本地镜像,然后我们从私有镜像仓库中下载该镜像

$ docker pull 192.168.2.10:5000/alpine


好了,到此本地搭建registry私有仓库就完结了.

以上操作都是root账号操作都,Docker也可以使用非root用户,比如我创建了www用户。

下面是使用非root用户操作的步骤
创建docker组

sudo groupadd docker

将当前用户加入docker组

sudo gpasswd -a www docker

重新启动docker服务(下面是CentOS7的命令)

sudo service docker restart

www用户退出系统重新登陆
运行docker命令

docker ps

问题:在push镜像到registry时,出现以下错误:

# docker push 192.168.163.10:5000/test 

The push refers to a repository [192.168.2.10:5000/test] 
9ec45e5f0334: Retrying in 1 second 
33f1a94ed7fc: Retrying in 1 second 
b27287a6dbce: Retrying in 1 second 
47c2386f248c: Retrying in 1 second 
2be95f0d8a0c: Retrying in 1 second 
2df9b8def18a: Waiting 
received unexpected HTTP status: 500 Internal Server Error

解决办法:

将selinux禁用

关闭SELinux的两种方法

1 永久方法 – 需要重启服务器

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

2 临时方法 – 设置系统参数

使用命令setenforce 0

附:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式

禁用之后就可以push了

查看registry中images:
http://192.168.2.10:5000/v2/_catalog

 

以上是关于docker私有仓库registry部署的主要内容,如果未能解决你的问题,请参考以下文章

部署docker-registry私有仓库

10.部署私有 docker registry

Docker部署私有仓库(registry&Harbor)

运维之我的docker-部署私有仓库Registry

Docker Registry部署镜像私有仓库及鉴权认证

Docker学习笔记——私有仓库部署