doina

一个小菜鸟运维工程师.

搭建本地私有仓库

什么是私有仓库Registry
官方的Docker hub是一个用于管理公共镜像的仓库,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.
但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要Registry来做私有仓库,满足自己的需求.
环境:
registry服务端:192.168.1.102
registry客户端:192.168.1.102
创建私有仓库
1.下载registry镜像
docker pull registry
2.默认会将仓库创建在容器的/tem/registry目录下,将他挂载到/data/docker/registry目录下
docker run -d -p 5000:5000 -v /data/docker/registry:/tmp/registry --name registry registry
管理私有仓库
1.查看现有的镜像
[root@baiyongjie ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest cd5239a0906a Less than a second ago 109 MB
docker.io/registry latest d1fd7d86a825 4 months ago 33.3 MB
2.给nginx镜像重新打tag
[root@baiyongjie ~]# docker tag docker.io/nginx:latest 192.168.1.102:5000/nginx
3.查看最新的镜像
[root@baiyongjie ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.102:5000/nginx latest cd5239a0906a Less than a second ago 109 MB
docker.io/nginx latest cd5239a0906a Less than a second ago 109 MB
4.上传镜像
[root@baiyongjie ~]# docker push 192.168.1.102:5000/nginx
The push refers to a repository [192.168.1.102:5000/nginx]
Get https://192.168.1.102:5000/v1/_ping: http: server gave HTTP response to HTTPS client
这个问题是由于客户端采用https,docker registry未采用https服务所致
解决方法:
在daemon.json文件加入以下内容,用来解决验证问题
vim /etc/docker/daemon.json
{ "insecure-registries":["192.168.1.102:5000"] }
5.重新上传镜像
[root@baiyongjie ~]# docker push 192.168.1.102:5000/nginx
The push refers to a repository [192.168.1.102:5000/nginx]
3ff93588120e: Pushed
24ee0a3fd4b9: Pushed
d626a8ad97a1: Pushed
latest: digest: sha256:1f9c00b4c95ef931afa097823d902e7602aebc3ec5532e907e066978075ca3e0 size: 948

6.查看仓库中的镜像
[root@baiyongjie ~]# curl http://192.168.1.102:5000/v2/_catalog
{"repositories":["nginx"]}

7.获取镜像的标签列表
[root@baiyongjie ~]# curl http://192.168.1.102:5000/v2/nginx/tags/list
{"name":"nginx","tags":["latest","0.1"]}
在客户端下载镜像
1.查看镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE

2.修改daemon.json文件
vim /etc/docker/daemon.json
{"insecure-registries":["192.168.1.102:5000"]}

3.重启docker服务
systemctl restart docker

4.下载镜像
[root@localhost ~]# docker pull 192.168.1.102:5000/nginx
Using default tag: latest
Trying to pull repository 192.168.1.102:5000/nginx ...
latest: Pulling from 192.168.1.102:5000/nginx
f2aa67a397c4: Pull complete
1cd0975d4f45: Pull complete
72fd2d3be09a: Pull complete
Digest: sha256:1f9c00b4c95ef931afa097823d902e7602aebc3ec5532e907e066978075ca3e0
Status: Downloaded newer image for 192.168.1.102:5000/nginx:latest

5.查看镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.102:5000/nginx latest cd5239a0906a Less than a second ago 109 MB
点赞

发表评论

邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据