标签: docker-registry

Docker注册表和索引

美好的一天!

我看了很多关于docker注册表的信息,但仍然有一些关于它的问题...请帮助我理解一些关于索引和注册表的事情.

  1. 我已经为私有存储库安装了docker-registry.我使用独立模式是真的.据我所知,docker注册表无法验证用户身份 - 它要求索引权限和身份验证.因此,我禁用了独立模式,因此docker-registry需要通过index.docker.io对我进行身份验证,但它不起作用 - 注册表允许我推送和拉出我想要的任何图像.所以问题是 - 为什么docker-registry不会尝试通过我index.docker.io验证我?

  2. 如果docker-registry通过index.docker.io对我进行身份验证,那么存储授权参数的位置是什么?我的意思是,如果我想授予用户vozerov仅推送到private.repo.domain:5000/vozerov存储库.

  3. Docker搜索索引.因此,如果我想在我的私有存储库中搜索我的图像,我需要告诉index.docker.io有新的私有存储库.它是真的还是我说错了?

  4. 我在github上找到了docker-index项目 - https://github.com/ekristen/docker-index.它是index.docker.io的替代品.那么,如果我安装它,登录它,docker搜索命令搜索我的私有索引或通过index.docker.io?

UPD:

我今晚用docker-registry工作了很多,所以我有点困惑:

  1. 如果独立模式为true,则不在任何变体中使用disable_token_auth.所以我们可以:

    1.1使用此repo而不使用auth(对任何人提取和推送权限).

    1.2使用nginx和docker登录my.registry.com的基本身份验证,因此每个拥有基本身份验证信息的用户都可以推送.因此,我们在这种模式下没有授权.

  2. 如果独立模式为false,则docker-registry需要与index.docker.io进行通信,但事实并非如此.两种变体:

    2.1.如果disable_auth_token为true - 我得到405错误(方法不允许),但这意味着我允许任何人推或拉图像?

    2.2.如果disable_auth_token为false - 我收到405错误...

对于2.1和2.2 docker登录my.registry.com无法正常工作 - 它显示我404错误...也许这是我的错误配置?

docker docker-registry

12
推荐指数
1
解决办法
5285
查看次数

无法将映像推送到配置为代理缓存的docker注册表

我按照指南设置了Docker v2注册表,充当Docker Hub映像的本地代理缓存.我的Docker守护程序配置了指向同一注册表实例的两个--insecure-registry--registry-mirror选项.

拉动图像时,通过将它们缓存到本地商店,它可以正常工作.

问题是当我尝试将图像推送到这样的本地私有注册表时,我得到一个奇怪的UNSUPPORTED错误.注册表日志说:

time="2015-11-09T13:20:22Z" level=error msg="response completed with error" err.code=UNSUPPORTED err.message="The operation is unsupported." go.version=go1.4.3 http.request.host="my.registry.io:5000" http.request.id=b1faccb3-f592-4790-bbba-00ebb3a3bfc1 http.request.method=POST http.request.remoteaddr="192.168.0.4:57608" http.request.uri="/v2/mygroup/myimage/blobs/uploads/" http.request.useragent="docker/1.9.0 go/go1.4.2 git-commit/76d6bc9 kernel/3.16.0-4-amd64 os/linux arch/amd64" http.response.contenttype="application/json; charset=utf-8" http.response.duration=2.035918ms http.response.status=405 http.response.written=78 instance.id=79970ec3-c38e-4ebf-9e83-c3890668b122 vars.name="mygroup/myimage" version=v2.2.0
Run Code Online (Sandbox Code Playgroud)

如果我在注册表上禁用代理设置,则推送工作正常.我是否遗漏了配置上的内容,或者只是私有注册表不能同时充当代理缓存?

docker docker-registry

12
推荐指数
1
解决办法
3205
查看次数

Docker Registry与Nexus/Artifactory

Docker引擎中的"Docker注册表"是否类似于Nexus/Artifactory?它们之间有什么相似之处和不同之处?如果我们已经拥有Nexus,我们可以使用它作为Docker注册表的替代方案并将其插入Docker引擎吗?

有人可以帮我清除这个吗?

nexus artifactory docker docker-registry

12
推荐指数
1
解决办法
4614
查看次数

如何使用docker Registry API v2将映像推送到docker注册表

我正在编写一个docker注册表api包装器,用于从一个私有注册表中提取图像并将它们推送到另一个私有注册表.

首先根据文档我需要拉出清单和图层image:tag.在 Puling An Image之后,我已经成功下载了特定image:tag和清单的所有图层.

下面推的图像,我遵循的步骤:

  1. POST /v2/<name>/blobs/uploads/(获取UUID即Location标题)
  2. HEAD /v2/<name>/blobs/<digest> (检查注册表中是否已存在)
  3. PUT /v2/<name>/blobs/uploads/<uuid>?digest=<digest>(Monolithic Upload)

对我来说不清楚的是:

  1. UUID我推送的每个单独层是唯一的还是对所有层重用的(例如,我是否需要为每个层运行一个新的POST,UUID然后在尝试上传之前获取新的?).
  2. 完成上传部分指示

要使上传被视为完成,客户端必须在上传端点上使用摘要参数提交PUT请求

但是,正如我所提到的,我正在使用单片上传,它使用的是PUT与完成上传部分中显示的相同的请求.所以通过单片上传,我还可以同时完成上传吗?

问题

  1. 当我完成上述所有步骤时,我BLOB_UNKNOWN 在上传摘要时收到错误,例如

    {"errors:"[{"code":"BLOB_UNKNOWN","message":"blob unknown to registry","detail":{"digest":}},...]}

根据文档,在推送清单时会产生此错误,并且清单中的其中一个层未知:

如果注册表未知一个或多个图层,则返回BLOB_UNKNOWN错误.错误响应的详细信息字段将具有标识丢失的blob的摘要字段.每个未知blob都会返回一个错误.响应格式如下:

令我困惑的是

  1. 我正在推送一个摘要(也就是一个层)而不是清单,为什么这个错误会返回?
  2. 我希望blob是未知的,因为我正在将新图像推入注册表

现在我将使用docker客户端,但是我没有在线找到任何包装器示例,看看它是如何被拉出来的.据推测,我错过了一些逻辑或误解了文档,但我不确定我哪里出错了?

docker docker-registry docker-api

12
推荐指数
1
解决办法
516
查看次数

Docker - 检查私有注册表映像版本

我需要使用哪些CLI命令来检查我的私有docker注册表中的映像是否比我服务器上当前运行的映像更新?

例如,我有一个我运行的容器 docker run -d my.domain.com:5000/project1

我想知道它是否已经过时了.

deployment docker docker-registry

11
推荐指数
1
解决办法
2万
查看次数

从Google Container Registry w/o gcloud中提取私人泊坞窗图片

我正在使用shippable将私有docker图像推送到Google Container Registry,然后我想从笔记本电脑本地或Google Compute Engine上的实例中提取.

我知道该命令gcloud preview docker pull gcr.io/projectID/image-name有效,但我不能依赖gcloud安装在每个人可能需要从中提取图像的机器上.

如果我docker-compose up -d在我的机器上运行,那么我会收到以下错误:

Pulling image gcr.io/projectID/image-name...
Pulling repository gcr.io/projectID/image-name
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 31, in main
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 21, in sys_dispatch
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 27, in dispatch
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 24, in dispatch
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 59, in perform_command
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 464, in up
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.project", line 208, in up
  File "/compose/build/docker-compose/out00-PYZ.pyz/compose.service", line 214, …
Run Code Online (Sandbox Code Playgroud)

google-compute-engine docker docker-registry google-container-registry docker-compose

11
推荐指数
1
解决办法
4797
查看次数

如何清理旧的未使用的Kubernetes图像/标签?

为了简化部署和短期回滚,对于要在Kubernetes上部署的每个新版本使用新的Docker映像标签很有用。如果不进行清理,则意味着将永远保留旧的image:tags。

我怎么能列出所有图片:标记,用于由Kubernetes容器那些老不用于从自动删除标签:这样我就可以找到所有的旧形象泊坞注册

我的目标是让Google Container Engine(GKE)理想地删除Google Container Registry中未使用的图像。

kubernetes google-kubernetes-engine docker-registry

11
推荐指数
1
解决办法
1万
查看次数

docker基础图像与solaris操作系统

有谁知道我可以从哪里获得Solaris OS的docker基础映像?

我尝试在Dockerhub上找到它但找不到它.

请提供详细信息'dockerhost/namespace/imagename:tag'

solaris docker dockerhub docker-registry docker-machine

11
推荐指数
1
解决办法
4918
查看次数

Docker Registry - 如果标签已经存在,则不允许推送(除了 :latest 标签)

我有一个场景,我们需要我们的私有 Docker Registry (v2) 不接受推送到标签(如果它已经存在)。

例如我有

192.168.0.77:5000/my-project:1.0.0
Run Code Online (Sandbox Code Playgroud)

有人在上面的端点上推送更新。它应该停止推动。

然后当用户使用标签 1.0.1 或任何其他标签推送时,它将成功推送。

我知道 Docker 允许推送相同的标签,但是我希望有这种工作流程,这样我们就不会以这种方式覆盖彼此的图像,而且这些将与 Jenkins 构建相关(用于交易目的)。

部署说明(在 bash 中)

 docker login -u admin -p fakepassword 192.168.0.77:5000
 docker tag my-project 192.168.0.77:5000/my-project:1.0.0
 docker push 192.168.0.77:5000/my-project:1.0.0
Run Code Online (Sandbox Code Playgroud)

有人可以建议一种实现这一目标的方法吗?

docker docker-registry

11
推荐指数
1
解决办法
2643
查看次数

ECS / ECR:通常的做法是每个映像(及相关版本)有一个注册表吗?

因此,我是ecs / ecr的新手,但似乎我必须在存储库名称后命名(带有标签)图像,以便将该图像推送到存储库。

所以我的问题是:是否打算让用户(我)仅将单个映像和该映像的任何关联版本推送到ecr中的单个存储库,从而在我需要推送完全不同的映像时创建另一个存储库?

基本上,一个用于nginx的仓库,一个用于postgressql的仓库,等等。

amazon-web-services amazon-ecs docker docker-registry

11
推荐指数
3
解决办法
2775
查看次数