Top

Docker-私有仓库

Docker私有仓库

我的环境是Centos7.4!1台服务器:Server

192.168.237.128-server
↓简介
Docker仓库分为公共仓库和私有仓库,基于registry可以搭建本地私有仓库,使用私有仓库的优点如下: 1.节省网络带宽,针对于每个镜像不用去Docker官网仓库下载; 2.下载Docker镜像从本地私有仓库中下载; 3.组件公司内部私有仓库,方便各部门使用,服务器管理更加统一; 4.可以基于GIT或者SVN、Jenkins更新本地Docker私有仓库镜像版本. 官方提供Docker Registry来构建本地私有仓库,目前最新版本为v2,最新版的docker已不再支持v1,Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式.
↓操作
1.修改配置文件指定仓库地址. 2.获取仓库容器镜像并允许. 3.就可以push上传了.

1. 从官网获取私有仓库容器

[root@server ~]# docker pull registry

2. 修改Docker配置文件

[root@server ~]# vim /etc/sysconfig/docker
1
2
3
<center><code2>↓将原来的OPTIONS注释添加下面这条.</code2></center>
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 192.168.237.128:5000'
ADD_REGISTRY='--add-registry 192.168.237.128:5000'
↓重启Docker程序.
[root@server ~]# systemctl restart docker

2. 运行私有仓库容器

↓仓库默认镜像存放的目录.
[root@server ~]# mkdir -p /data/registry
↓运行容器(-v是映射目录):一般情况仓库在容器内的/var/lib/registry目录,但是如果容器被删除了,仓库中的镜像也没了,所有我们就将本地目录映射到/var/lib/registry.
[root@server ~]# docker run -itd -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry 3d78855cf89ce248c2e46fac9485337fef9d5638250f3648d9ff652364bcba01

3. 上传镜像到仓库

↓更改镜像地址(不然就上传到官网去了).
[root@server ~]# docker tag docker.io/nginx:latest 192.168.237.128:5000/nginx:latest
↓多出一个镜像.
[root@server ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.237.128:5000/nginx latest 2bcb04bdb83f 2 weeks ago 109 MB
↓上传镜像到5000端口:就是容器仓库中.
[root@server ~]# docker push 192.168.237.128:5000/nginx:latest The push refers to a repository [192.168.237.128:5000/nginx] 7e274c0effe8: Pushed dd0338cdfab3: Pushed 5dacd731af1b: Pushed latest: digest: sha256:dabecc7dece2fff98fb00add2f0b525b7cd4a2cacddcc27ea4a15a7922ea47ea size: 948

4. 测试

↓查看仓库里的镜像.
[root@server ~]# curl -XGET http://192.168.237.128:5000/v2/_catalog {"repositories":["nginx"]}
↓查看nginx镜像中的tag(url中的nginx是镜像名).
[root@server ~]# curl -XGET http://192.168.237.128:5000/v2/nginx/tags/list {"name":"nginx","tags":["latest","v1"]}
↓客户端从私有仓库获取镜像(5-8日新加).
[root@client ~]# vim /etc/sysconfig/docker
1
ADD_REGISTRY='--add-registry 192.168.237.128:5000'			#让客户端默认寻找这个仓库找镜像.
[root@server ~]# docker pull nginx:latest
↓如果没有配置上面的参数就使用下方的方法获取(指定地址).
[root@server ~]# docker pull 192.168.237.128:5000/nginx:latest