首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >docker通过缓存处理私有注册表不起作用

docker通过缓存处理私有注册表不起作用
EN

Stack Overflow用户
提问于 2015-09-11 19:43:41
回答 2查看 6.4K关注 0票数 6

我尝试了在Registry2.1.1版本中发布的贯穿缓存停靠器,其中包含了docker1.8。然而,在CentOS7.1,我跟踪这些网站,它不作为镜像,任何投入将是非常感谢的。我希望这是配置注册表服务和传递docker守护进程参数的正确方法。

网站:https://github.com/docker/distribution/blob/master/docs/mirror.md mirror/

步骤:

  1. 我添加了要传递给坞守护进程的参数,并重新启动它: /etc/sysconfig/docker ##其他要传递给坞守护进程的参数#这些参数将由sysv initscript解析,并附加到传递给docker -d OPTIONS=的参数列表“-注册表-镜像=http://localhost:5000
  2. 添加注册表配置并安装到容器中: 版本: 0.1日志:字段:服务:注册表存储:缓存: blobdescriptor:内存文件系统:root目录: /var/lib/registry : addr : 5000头:https://registry-1.docker.io选项: nosniff health: storagedriver:启用:真间隔: 10s阈值:3个代理: remoteurl:https://registry-1.docker.io
  3. 已启动的注册表容器 docker run -d -p 5000-重新启动=始终-名称注册表-镜像-v -v -e STANDALONE=false -e MIRROR_SOURCE=https://registry-1.docker.io -e MIRROR_SOURCE_INDEX=https://index.docker.io注册表:2.1.1
  4. 使用以下命令对缓存进行了测试: 在我的镜像运行的情况下,绘制一个我以前从未绘制过的图像(使用时间) 从码头集线器拉出配置为MIRROR_SOURCE$时间对接器拉忙箱:最新 从本地机器$ docker rmi busybox中删除图像:最新的 最后,这应该从缓存中重新提取映像,这在我的情况下是不起作用的,而是从码头集线器中提取的。 我还试着在我的主机文件系统中查看挂载的图像卷文件夹,但找不到它。 $ ls /opt/docker-registry/local/images/docker/registry/v2/repositories/ 尝试对该新映像进行rest调用,然后返回错误消息: $ curl http://localhost:5000/v2/busybox/tags/list {“错误”:{“代码”:“NAME_UNKNOWN”,“消息”:“注册表不知道的存储库名称”,“详细信息”:{“名称”:“busybox”}
EN

回答 2

Stack Overflow用户

发布于 2021-10-01 07:44:42

问题中的API URL是错误的。正确的办法是:

代码语言:javascript
运行
复制
$ curl http://localhost:5000/v2/library/docker/tags/list

{"name":"library/docker","tags":["1","1-dind","1-experimental","1-experimental-dind","1-e...

对于名称中没有斜杠的图像,请使用library前缀。如果您的注册表正在响应,它应该可以工作。

在我的例子中,我是这样运行的:

代码语言:javascript
运行
复制
docker run \
        -d \
        -p 5000:5000 \
        --restart=always \
        --name docker-through-cache \
        -v "$PWD/docker-proxy-config.yml:/etc/docker/registry/config.yml" \
        -v /var/docker-registry:/var/docker-registry \
        registry:2

配置:

代码语言:javascript
运行
复制
version: 0.1
proxy:
  remoteurl: https://registry-1.docker.io
storage:
  filesystem:
    rootdirectory: /var/docker-registry
    maxthreads: 100
http:
  addr: 0.0.0.0:5000
log:
  accesslog:
    disabled: true
  level: info
  formatter: text
  fields:
    service: registry

Ubuntu上的客户端配置位于/etc/docker/daemon.json文件中:

代码语言:javascript
运行
复制
{
  "registry-mirrors": ["http://127.0.0.1:5000"]
}

当您的客户端配置正确时,存储库日志中将显示以下日志:

代码语言:javascript
运行
复制
time="2021-10-01T07:13:47.130717525Z" level=info msg="response completed" go.version=go1.11.2 http.request.host="127.0.0.1:5000" http.request.id=d9329952-12db-427e-b2c6-346aa8c96425 http.request.method=GET http.request.remoteaddr="172.17.0.1:46142" http.request.uri="/v2/library/docker/blobs/sha256:f7a4137012260e097fc6b4bf6d75ba3b193acb399fb1276687303dea63ba519c" http.request.useragent="docker/20.10.8 go/go1.16.6 git-commit/75249d8 kernel/5.11.0-34-generic os/linux arch/amd64 UpstreamClient(Docker-Client/20.10.8 \(linux\))" http.response.contenttype="application/octet-stream" http.response.duration=451.36281ms http.response.status=200 http.response.written=61283898

当客户端下载一个层(查看blob哈希)时,就会出现这个特定的日志:

代码语言:javascript
运行
复制
$ docker pull docker:20.10.8-dind
20.10.8-dind: Pulling from library/docker
...
f7a413701226: Pull complete
...
票数 3
EN

Stack Overflow用户

发布于 2015-12-18 19:54:36

我用了..。

代码语言:javascript
运行
复制
docker run -p 5000:5000 \
    -e STANDALONE=false \
    -e MIRROR_SOURCE=https://registry-1.docker.io \
    -e MIRROR_SOURCE_INDEX=https://index.docker.io \
    -e "REGISTRY_LOG_LEVEL=debug" \
    -e "REGISTRY_REDIRECT_DISABLE=true" \
    -v /var/lib/registry:/var/lib/registry \
    --name registry-cache-latest \
    registry

。。然后指向http服务器的注册镜像,而不是https。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32531048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档