介绍

在安装好docker后,我们执行docker pull去下载镜像的时候,其实是默认从dockerhub上拉取的,这个是docker的公共仓库,如果在公司中使用docker,我们不可能把自己的镜像上传到公共仓库,这个时候就需要有一个企业自己是仓库,在局域网之内搭建,既可以提升下载镜像的速度,也可以避免内部的镜像暴露出去。

目前常用 registry 版本为 v2,registry v2 拥有断点续传、并发拉取镜像多层等特点。能并发拉取多层是因为镜像的元信息与镜像层数据分开存储,当 pull 一个镜像时,先进行认证获取到 token 并授权通过,然后获取镜像的 manifest 文件,进行 signature 校验。校验完成后,依据 manifest 里的层信息并发拉取各层。其中 manifest 包含的信息有:仓库名称、tag、镜像层 digest 等

镜像的完整内容分为两部分,一部分是manifest,一部分是image blob,第一部分是镜像的元数据,或者叫元信息,第二部分叫做镜像的二进制文件,也就是镜像的真实文件,可以认为某一个blob就是镜像的某一层的真实二进制文件。

还涉及两个概念,一个是sha256,另外一个是digest
sha256是一种校验方法,docker用这种方法来计算镜像层或者元信息的sha256的sum值,用于校验信息,而digest就是manifest的校验信息值

环境

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

安装Docker

yum -y install yum-utils
yum-config-manager     --add-repo     https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
[root@master ~]# systemctl start docker
[root@master ~]# docker --version
Docker version 20.10.1, build 831ebea
[root@localhost ~]# systemctl start docker

下载registry镜像

[root@localhost ~]#  docker pull registry
Using default tag: latest
latest: Pulling from library/registry
0a6724ff3fcd: Pull complete
d550a247d74f: Pull complete
1a938458ca36: Pull complete
acd758c36fc9: Pull complete
9af6d68b484a: Pull complete
Digest: sha256:d5459fcb27aecc752520df4b492b08358a1912fcdfa454f7d2101d4b09991daa
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
registry     latest    678dfa38fcfa   2 weeks ago   26.2MB

运行registry容器

[root@localhost ~]#  docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
10a89089c799a0ad8e2258f600c665f52293022c048078b42fb2c1f99e6b0e29
参数说明:
-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
-v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
--name registry:创建容器命名为registry,你可以随便命名;
registry:latest:这个是刚才pull下来的镜像;

查看镜像仓库中的所有镜像

[root@localhost ~]# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]}

docker client下载镜像并打标签

[root@localhost ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
[root@localhost ~]# docker tag centos:latest 192.168.1.10:5000/centos:latest

docker client 修改配置文件,设置私有仓库

方式有两种
[root@node ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"],"insecure-registries": [ "192.168.1.10:5000"]
}[root@localhost ~]# vim /usr/lib/systemd/system/docker.service 14 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.10:5000
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

docker client 上传镜像

[root@localhost ~]# docker push 192.168.1.10:5000/centos
Using default tag: latest
The push refers to repository [192.168.1.10:5000/centos]
2653d992f4ef: Pushed
latest: digest: sha256:dbbacecc49b088458781c16f3775f2a2ec7521079034a7ba499c8b0bb7f86875 size: 529

测试是否可以下载镜像

[root@localhost ~]# docker rmi 192.168.1.10:5000/centos
Untagged: 192.168.1.10:5000/centos:latest
Untagged: 192.168.1.10:5000/centos@sha256:dbbacecc49b088458781c16f3775f2a2ec7521079034a7ba499c8b0bb7f86875
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
registry     latest    678dfa38fcfa   2 weeks ago   26.2MB
centos       latest    300e315adb2f   3 weeks ago   209MB
[root@localhost ~]#  docker pull 192.168.1.10:5000/centos
Using default tag: latest
latest: Pulling from centos
Digest: sha256:dbbacecc49b088458781c16f3775f2a2ec7521079034a7ba499c8b0bb7f86875
Status: Downloaded newer image for 192.168.1.10:5000/centos:latest
192.168.1.10:5000/centos:latest
[root@localhost ~]# docker images
REPOSITORY                 TAG       IMAGE ID       CREATED       SIZE
registry                   latest    678dfa38fcfa   2 weeks ago   26.2MB
centos                     latest    300e315adb2f   3 weeks ago   209MB
192.168.1.10:5000/centos   latest    300e315adb2f   3 weeks ago   209MB

列出仓库中的所有镜像(在client上操作的,哪台都可以)

[root@localhost ~]# curl http://192.168.1.10:5000/v2/_catalog
{"repositories":["centos"]}

删除镜像

docker registry默认情况下没有开启删除镜像的功能,需要修改配置文件,进行打开,下边的操作是在docker registry上操作的

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS         PORTS                    NAMES
10a89089c799   registry:latest   "/entrypoint.sh /etc…"   9 minutes ago   Up 3 minutes   0.0.0.0:5000->5000/tcp   registry
[root@localhost ~]# docker exec -it registry  /bin/sh
/ # vi /etc/docker/registry/config.yml
末行添加
delete:         enabled: true
[root@localhost ~]# docker restart registry
registry

自己添加的内容:

docker client 执行删除操作,如下,还是失败,那就算了吧,这个只是为了让你理解并且会用registry,企业用用到仓库的时候使用的是harbor,一个图形化界面的docker镜像仓库,而且还有账号和密码,安全级别也更高

[root@localhost ~]# curl -I -X DELETE http://192.168.1.10:5000/v2/centos/manifests/sha256:dbbacecc49b088458781c16f3775f2a2ec7521079034a7ba499c8b0bb7f86875
HTTP/1.1 405 Method Not Allowed
Content-Type: application/json; charset=utf-8
Docker-Distribution-Api-Version: registry/2.0
X-Content-Type-Options: nosniff
Date: Mon, 04 Jan 2021 06:07:42 GMT
Content-Length: 78

对于企业公司用镜像仓库的话有条件还是推荐使用harbor,harbor是一款有图形化界面的仓库,便于管理,安装,删除镜像等等,registry当你大量上传镜像而不清理的时候还会出现这个容器大量占用服务器磁盘空间,当你删除镜像的时候也不会像harbor可以有选择性的删除,registry镜像删除方法亲自实验过,当占用过大的时候直接全部删除

#这个是去到registry容器所映射的主机目录,所有的镜像文件都存放到/data/registry目录下
[root@localhost ~]# cd /data/registry
[root@localhost registry]# ls
docker
先来看一下目录构成情况
[root@localhost registry]# tree docker/
docker/
└── registry└── v2├── blobs│   └── sha256│       ├── 30│       │   └── 300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55│       │       └── data│       ├── 7a│       │   └── 7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621│       │       └── data│       └── db│           └── dbbacecc49b088458781c16f3775f2a2ec7521079034a7ba499c8b0bb7f86875│               └── data└── repositories└── centos├── _layers│   └── sha256│       ├── 300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55│       │   └── link│       └── 7a0437f04f83f084b7ed68ad9c4a4947e12fc4e1b006b38129bac89114ec3621│           └── link├── _manifests│   ├── revisions│   │   └── sha256│   │       └── dbbacecc49b088458781c16f3775f2a2ec7521079034a7ba499c8b0bb7f86875│   │           └── link│   └── tags│       └── latest│           ├── current│           │   └── link│           └── index│               └── sha256│                   └── dbbacecc49b088458781c16f3775f2a2ec7521079034a7ba499c8b0bb7f86875│                       └── link└── _uploads27 directories, 8 files
主要就是进入/data/registry/docker/registry/v2/blobs以及/data/registry/docker/registry/v2/repositories删除下面的所有
操作如下:
[root@localhost repositories]# cd /data/registry/docker/registry/v2/blobs
[root@localhost blobs]# ls
sha256
[root@localhost blobs]# rm -rf *
[root@localhost blobs]# cd /data/registry/docker/registry/v2/repositories
[root@localhost repositories]# ls
centos
[root@localhost repositories]# rm -rf *
查看镜像仓库是否还有镜像:
[root@localhost repositories]# curl http://192.168.1.10:5000/v2/_catalog
{"repositories":[]}
完毕!成功!

Docker镜像仓库registry相关推荐

  1. Docker镜像仓库Harbor之搭建及配置

    Docker镜像仓库Harbor之搭建及配置 1.Harbor 介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署 ...

  2. Docker镜像仓库

    Docker镜像仓库 搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现. 官网地址:Docker Hub 简化版镜像仓库 Docker官方的Docker Registry是 ...

  3. 离线手动部署docker镜像仓库——harbor仓库(二)

    前言: 在<离线手动部署docker镜像仓库--harbor仓库(一)>中,记录了离线部署harbor仓库的简单过程,这里主要记录修改默认访问端口80端口为1180端口的部署方式和注意点. ...

  4. 你必须知道的Docker镜像仓库的搭建

    近期工作中发现用到的容器镜像越来越多(不多的时候没考虑过镜像仓库的问题),同一个容器镜像也存在多个版本,那么镜像仓库的搭建需求就涌现出来,本文就目前的几个常用镜像仓库的搭建进行介绍,我们可以根据需要选 ...

  5. 搭建Harbor docker镜像仓库

    Harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distributio ...

  6. Docker(五)——Docker镜像仓库

    本文首发于我的个人网站: https://hewanyue.com/ 本文作者: Hechao 本文链接: https://hewanyue.com/blog/6187894.html   比较常见的 ...

  7. Docker 镜像仓库 Harbor 部署 及 跨数据复制

    Docker 镜像仓库 Harbor 部署 及 跨数据复制 注: 由于 Harbor 是基于 Docker Registry V2 版本,所以Docker version 17.05.0-ce, bu ...

  8. Docker镜像仓库(包括阿里云,harbor,和本地镜像的导出和导入)

    Docker镜像仓库 什么是镜像仓库 存放着很多镜像的仓库 为什么要使用镜像仓库 1. 起到备份的作用 2. 方便其他机器下载使用 镜像仓库的种类 公共镜像仓库 官方: http://hub.dock ...

  9. Docker镜像仓库配置

    Docker镜像仓库 搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现. 官网地址 https://hub.docker.com/_/registry 配置Docker信任 ...

最新文章

  1. Android数据填充器LayoutInflater
  2. 极市分享|第34期 袁源Jerry:机器学习及深度学习在自动驾驶中的应用
  3. 【解决】insert 语句无效果,在查询中正常运行问题
  4. 卷积神经网络爬虫实现新闻在线分类系统
  5. html5点击切换选项卡,简单纯js实现点击切换TAB标签实例
  6. 准备学习研究一下语音识别 请问有哪些值得推荐的书籍 论文 及开源库?
  7. 获取服务器响应失效,从Web服务器获取响应时出现问题
  8. C语言,函数调用使用方法
  9. asp.net中使用FreeTextBox控件
  10. 藏在耳机里的小东西——蓝牙天线
  11. OEM信息修改工具-深度系统OEM-DIY
  12. SLA/LCD/DLP光固化3D打印原理分析!
  13. java基础入门习题答案_传智播客-Java基础入门习题答案
  14. 靠一套PPT上市估值120亿:新能源韭菜的自我修养
  15. 坚果PRO3搭载Android,安卓 10 来了,坚果 Pro 3 推送 Smartisan OS v7.5.0 早期众测版
  16. 2023最新最全vscode插件精选
  17. 魔兽世界正式服哪个服务器稳定,魔兽世界正式服什么职业厉害2021
  18. 1001. 害死人不偿命的(3n+1)猜想 (15)
  19. HTML5练习——布局练习01(内含5个基本的css命名规则)
  20. SAP MM 公司间STO外向交货单SPED输出报错 - PO### does not contain a confirmation control key -

热门文章

  1. 如何画出一个漂亮的思维导图
  2. 云渲染技术的“公”“私”赋能
  3. 税务筹划包括哪些方面?税务筹划的基本步骤
  4. 人生之路 — 如何治疗失眠
  5. smallint mysql_mysql的数据类型int、bigint、smallint 和 tinyint取值范围
  6. Excel催化剂开源第30波-在Excel上尽情地使用LINQ
  7. 程序员的编辑器----VIM
  8. pi的数字飞花令的理论上限
  9. 看看这篇拯救发际线的干货吧--警惕 Go 编程陷阱
  10. 怎样在Delphi2007中安装OCX控件