问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何搭建及使用docker registry

发布网友 发布时间:2022-04-22 06:47

我来回答

1个回答

热心网友 时间:2022-06-16 19:31

registry是什么?
registry是Docker的镜像存储服务,docker hub上的registry镜像见Registry官方镜像,更多详细信息请参见源码。
搭建registry
在服务器上执行如下命令安装docker,这里选择腾讯云(Ubuntu Server 14.04.1 LTS 64位)镜像来创建服务器
curl -fsSL https://get.docker.com/ | sh

安装docker-compose Docker Compose是一个定义及运行多个Docker容器的工具。使用Docker Compose只需要在一个配置文件中定义多个Docker容器,然后使用一条命令将多个容器启动,Docker Compose会通过解析容器间的依赖关系,按先后顺序启动所定义的容器。详见Docker Compose
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose

启动registry服务,此例中包含nginx和registry两个容器,涉及的包及配置文件请参见附件,解压后,直接执行如下命令即可创建服务。
docker-compose up -d

停止服务
docker-compose stop

重启服务
docker-compose restart

下线服务
docker-compose down

上传镜像
因为上面搭建的registry服务是http的,所以docker启动参数需要配置--insecure-registry localhost选项,修改/etc/default/docker文件
DOCKER_OPTS="--insecure-registry localhost"

重启docker
service docker restart

拉取上传镜像 docker pull;docker tag;docker push(tag默认为latest)
docker pull hello-world
docker tag hello-world localhost/library/hello-world
docker push localhost/library/hello-world

下载镜像
docker pull localhost/library/hello-world

删除镜像
docker rmi localhost/library/hello-world

获取镜像仓库列表
# curl http://localhost/v2/_catalog
{"repositories":["library/hello-world"]}

未上传镜像前的输出如下:
# curl http://localhost/v2/_catalog
{"repositories":[]}

获取镜像tag列表
# curl -X GET http://localhost/v2/library/hello-world/tags/list
{"name":"library/hello-world","tags":["latest"]}

获取镜像manifests信息
# curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X GET http://localhost/v2/library/hello-world/manifests/latest
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 1473,
"digest": "sha256:c54a2cc56cbb2f04003c1cd4507e118af7c0d340fe7e2720f70976c4b75237dc"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 974,
"digest": "sha256:c04b14da8d1441880ed3fe6106fb2cc6fa1c9661846ac0266b8a5ec8edf37b7c"
}
]
}

其中c54a2cc56cbb2f04003c1cd4507e118af7c0d340fe7e2720f70976c4b75237dc即为执行docker images时看到的IMAGE ID。 layers表示了镜像的层次关系,可以通过layers中的digest来拉取blob,见下面获取镜像blob
获取镜像blob
在上面获取hello-world:latest镜像的manifests信息中可以看到其只有一个layer,以此为例来看如何获取镜像blob。从拉取的结果可以看到获取的blob与文件sha256是一致的。执行docker pull实际上就是首先获取到镜像的manifests信息后,再拉取blob的。
# curl -s -X GET http://localhost/v2/library/hello-world/blobs/sha256:c04b14da8d1441880ed3fe6106fb2cc6fa1c9661846ac0266b8a5ec8edf37b7c -o hello-world.blob
# ls -l hello-world.blob
-rw-r--r-- 1 root root 974 Nov 23 09:56 hello-world.blob
# sha256sum hello-world.blob
c04b14da8d1441880ed3fe6106fb2cc6fa1c9661846ac0266b8a5ec8edf37b7c hello-world.blob

##删除镜像(soft delete)
首先通过curl -i 参数获取到镜像的Docker-Content-Digest,registry 2.3及以后的版本必须在header中指定Accept: application/vnd.docker.distribution.manifest.v2+json,否则默认返回的是schema1的digest,其与schema2的digest不同,使用不指定上述头信息返回的digest删除时会返回404。
# curl -i -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X GET http://localhost/v2/library/hello-world/manifests/latest

HTTP/1.1 200 OK
Server: nginx/1.11.5
Date: Wed, 23 Nov 2016 02:17:51 GMT
Content-Type: application/vnd.docker.distribution.manifest.v2+json
Content-Length: 524
Connection: keep-alive
Docker-Content-Digest: sha256:a18ed77532f6d6781500db650194e0f9396ba5f05f8b50d4046b294ae5f83aa4
Docker-Distribution-Api-Version: registry/2.0
Etag: "sha256:a18ed77532f6d6781500db650194e0f9396ba5f05f8b50d4046b294ae5f83aa4"

{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 1473,
"digest": "sha256:c54a2cc56cbb2f04003c1cd4507e118af7c0d340fe7e2720f70976c4b75237dc"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 974,
"digest": "sha256:c04b14da8d1441880ed3fe6106fb2cc6fa1c9661846ac0266b8a5ec8edf37b7c"
}
]
}

根据上一步返回的Docker-Content-Digest删除,返回202表示删除成功
# curl -k -v -s -X DELETE http://localhost/v2/library/hello-world/manifests/sha256:a18ed77532f6d6781500db650194e0f9396ba5f05f8b50d4046b294ae5f83aa4

* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 80 (#0)
> DELETE /v2/library/hello-world/manifests/sha256:a18ed77532f6d6781500db650194e0f9396ba5f05f8b50d4046b294ae5f83aa4 HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost
> Accept: */*
>
< **HTTP/1.1 202 Accepted**
* Server nginx/1.11.5 is not blacklisted
< Server: nginx/1.11.5
< Date: Wed, 23 Nov 2016 02:29:59 GMT
< Content-Type: text/plain; charset=utf-8
< Content-Length: 0
< Connection: keep-alive
< Docker-Distribution-Api-Version: registry/2.0
<
* Connection #0 to host localhost left intact

确认结果
# curl -X GET http://localhost/v2/library/hello-world/tags/list
{"name":"library/hello-world","tags":null}

删除镜像(hard delete)
在上一步中,只是删除了镜像的manifests信息,解引用的blob还在占用磁盘空间,执行如下命令可以查看可以删除的blob
docker exec -it myregistry_registry_1 /bin/registry garbage-collect --dry-run /etc/registry/config.yml

要删除blob,释放磁盘空间,需要执行下面的命令。需要特别注意的是在执行下面的命令时registry必须是只读模式(只读模式可在registry配置文件中设置),否则可能会导致数据不一致。
docker exec -it myregistry_registry_1 /bin/registry garbage-collect /etc/registry/
docker怎么搭建私有仓库registry?

搭建过程分为几个步骤:创建Registry目录、定义Docker-Compose脚本和服务、设置Nginx端口转发、增加Nginx文件上传大小、配置SSL证书和身份验证。在Nginx配置中设置虚拟主机,根据域名修改server_name参数,并调整上传文件大小限制。为SSL证书生成有效或自签名证书,并在Nginx配置文件中引用。创建用于基本身份验证的ht...

socks5 代理软件 - StormProxies

StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP纯净高匿;2、覆盖全球20...

Docker Registry镜像仓库搭建及镜像常用操作汇总

首先,选择一台虚拟机作为仓库宿主机和实验平台,以Ubuntu 20.04为例。其次,通过拉取官方提供的Registry镜像,创建并启动容器,完成Registry服务的部署。服务部署完成后,即可开始进行镜像的上传和下载操作,实现资源的共享与分发。此外,学习镜像的导出和导入功能,实现镜像的备份和迁移,确保业务连续性和资源...

【Docker】Docker Registry(镜像仓库)

Docker Registry:官方提供的私有仓库服务,与 Docker Hub 类似。五、常用命令 包括镜像仓库命令(如 login、pull、push、search)和镜像命令(如 images、inspect、tag、run)。这些命令用于管理镜像的拉取、推送、搜索以及容器的创建。六、镜像仓库实战:搭建一个 Nginx 服务 1. 搜索并选择一个稳定、无...

搭建docker私有镜像仓库

1. 基础环境准备首先,确保你的系统运行的是兼容的Docker版本,并安装相应的Docker软件。检查Docker服务是否正常运行,以确保后续操作顺利进行。2. 安装和配置Docker从官方网站获取Docker安装包,按照指示安装。安装完成后,通过命令行查看Docker服务状态,确认其正在运行。3. 搭建私有镜像仓库首先,下载registry...

如何在本地搭建Docker-Registry

比如repos.rd,但是这个域名又不存在,所以我们需要这个私有DNS服务器做解析,当然如果我们的域名是公有的,或直接使用IP,则不需要设置,否则会出现repos.rd/v1/_ping: i/o timeout获取这个Container的IPdocker inspect -format '{{ .NetworkSettings.IPAddress }}' $REGISTRY配置NGINXsudo vim /etc/...

如何在Docker下部署 Registry 服务

1、安装 Docker。2、从 Docker 公共 Registry 中运行 hello-world 镜像。docker run hello-world run 命令自动从 Docker 的官方镜像库中将 hello-world 镜像 pull 下来。3、在 localhost 上启动 Registry 服务。docker run -p 5000:5000 registry:2.0 这将在 DOCKER_HOST 上启动一个 Registry 服务...

容器镜像私有仓库搭建(registry)-- 简单易上手

在搭建私有仓库时,首先通过HTTP或HTTPS协议连接,确保使用SSL证书并将其与密钥文件一起准备。具体步骤包括:使用`docker pull`下载镜像,例如`docker pull ubuntu:latest`,然后使用`docker tag`将镜像标记为`registry.example.com:5000/ubuntu:latest`,最后通过`docker push`将镜像上传到仓库。完成镜像上传...

搭建Docker镜像仓库

搭建Docker镜像仓库的步骤如下:首先,如果你之前已经配置过阿里云Docker镜像,可以跳过这一步;如果没有,需要进行配置。配置的重点是使Docker信任你的私服,通常私服使用http协议,因此需要将你的IP地址添加到信任列表中。为了实现这个,你需要创建一个新的配置文件,将相关命令写入其中。接着,利用Docker...

docker registry使用指南

docker registry 的作用就是存储我们的镜像。通常情况下我们可以使用 docker hub 来存储,不过如果是在公司内部使用,不想将镜像公开,可以手动搭建一个本地registry,如 docker registry 或 harbor 。本文简单介绍一下 docker registry 的搭建使用及常用配置。搭建registry最基础的命令为: docker run -d...

...实战进阶篇:搭建Registry&amp;Harbor私有仓库、Dockerfile(八)

搭建Harbor私有仓库时,环境与Registry类似。首先,安装Harbor,可通过GitHub官网下载离线安装包并上传至服务器。接着,设置host,以通过域名访问Harbor。修改Harbor配置文件,创建伪证书以开启HTTPS。执行安装步骤并配置docker/daemon.json,以指定连接Harbor的每台机器的私有仓库地址。访问Harbor服务器地址,确认...

docker搭建redis集群 docker registry k8s docker集群搭建 docker client docker tag的作用 docker快速搭建 docker搭建文件服务器 为什么要使用docker docker mount
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...你财富这个金融平台靠谱吗?最近想开始理财了,有没有什么推荐的产品... 如何保持良好的心态,应对生活压力 氟利昂对臭氧层的危害 ...姓党,孩子于2012年12月18日21点21分出生,谢谢!!! 飞利浦录音笔如何使用 大别山到临沂有多远 济南到大别山有动车吗? 大家帮忙一下。我弟弟的作业趣味猜城市名。 ...久雨初睛,雪消冰融,船出长江口,风平浪静,四季花开,海上尽绿洲。_百... 填选城市名(长春.旅顺.宁波.开封.重庆.无锡.贵阳)。 如何搭建docker swarm 怎么搭建docker 私有仓库 墙壁插座内电源线国家规定留多长? 如何正确使用电源线组(延长线) 适配器电源线延长,加电压还是加电流。 英国达人秀中这个女评委叫什么 装修的时候插座位置估计错了现在要移动插座要加长... 有谁可以告诉我(爱情公寓2) 16集中那个串客的女... 电话线如何加长 电源线太短,如何加长? 军运会有好几个女排主力队员,去年的冠军巴西其队... 刘姓起名 经常梦到老公 为什么? 看图猜字答案及图片猜三个字 公加个偏旁能组成哪些字? dnf如何打空格角色名? qq聊天记录,如何同步? 美国有个变性女星阿曼达 老公就睡在我旁边,可还是天天梦到他,在梦里面我们... 怎么样在DNF创建角色输入空格键在昵称里呢? 怎么利用docker搭建一个预发布环境 如何创建一个安全的Docker基础镜像 如何在mac上搭建docker环境进行漏洞 如何在Ubuntu14.04上搭建私有docker registry-Linux 如何使用Docker在容器中搭建一个网站 汽车报价大全是干什么用的? 全球通在网时长什么意思 移动网上商城上的号码承诺在网时长是不是保底的时间? 寝室墙上有这么个联通光纤接口,是不是自己买个光... 什么是在网时长奖励积分? 黄帝、颛顼、帝喾、尧、舜、禹分别是什么关系,他... qq空间上的在网时长是什么意思 陈姓是怎么来的 消费积分包含在网时长奖励积分吗? 陈姓在哪个朝代 有没有统计wifi在网时长的app应用啊?————————急切 有没有统计wifi在网时长的app应用啊?————————急切... 电信宽带时长如何计算的? 千兆网与百兆网的RJ45接口是一样的吗? QQ连续在网时长如何设置个性化?