Docker(九) 构建私有仓库Registry

  • A+
所属分类:Docker

为什么搭建私有仓库

  • 节省带宽,镜像无需从中央仓库下载,只需从私有仓库中下载即可

  • 对于私有仓库中已有的镜像,提升了下载速度

  • 便于内部镜像的统一管理

下载registry

docker pull registry
docker images

注意:

registry默认占用5000端口,如果使用默认网络模式,运行容器,需要把端口映射出去,如下:

docker run -d -p 5000:5000 registry

运行容器

运行容器,不分配ip,稍后通过pipework分配ip

[root@py docker-static-ip]# docker run -d --name yalei_registry --net=none  registry
38c22a97bdd5f535301268279dbf1174a915d4a6401a8918b94f2a07b36b513b
[root@py docker-static-ip]# docker ps

配置固定ip

前文介绍过pipework

[root@py docker-static-ip]# vim containers.cfg 
#<container-id>,<bridge-name>,<ipaddress/netmask>,<gateway>
0a4c9aaf0ef4,br0,192.168.1.106/24,192.168.1.1

测试返回{}正常

[root@py docker-static-ip]# curl http://192.168.1.106:5000/v2/
{}

打TAG标签

我们为以前的镜像大个tag标签

[root@py docker-static-ip]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
yalei/nginx                   v1                  ee1b5193f8b8        9 hours ago         643.3 MB
[root@py docker-static-ip]# docker tag yalei/nginx:v1 192.168.1.106:5000/yalei/nginx:v2

Docker从1.3.X之后默认docker registry使用的是https,所以当用docker push命令上传镜像时,如果registry是非https的时候就会报错:

[root@py docker-static-ip]# docker push 192.168.1.106:5000/yalei/nginx:v2
The push refers to a repository [192.168.1.106:5000/yalei/nginx]
Get https://192.168.1.106:5000/v1/_ping: http: server gave HTTP response to HTTPS client

HTTPS解决办法

1、申请免费HTTPS证书,通过Nginx代理,配置参考如下:

https://www.abcdocker.com/abcdocker/1727

2、这里,我们通过修改本地配置文件的方式:

[root@py docker-static-ip]# vim /etc/sysconfig/docker
# /etc/sysconfig/docker
# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 192.168.1.106:5000'

OPTIONS增加:--insecure-registry 192.168.16.124:5001

重启docker服务,启动容器

[root@py ~]# systemctl restart docker.service
[root@py ~]# docker start yalei_registry

上传镜像

[root@py docker-static-ip]# docker push 192.168.1.106:5000/yalei/nginx:v2

现在,我们可以通过客户机pull下载镜像

[root@py docker-static-ip]# docker pull 192.168.1.106:5000/yalei/nginx:v2

查看私有仓库镜像

浏览器访问http://192.168.1.106:5000/v2/_catalog

或者curl http://192.168.1.106:5000/v2/_catalog

YaLei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: