标签: docker-registry

什么是Docker推送到私有注册表的X-Registry-Auth的内容

使用REST API将Docker镜像推送到私有注册表时,X-Registry-Auth头的内容应该是什么?每个使用Docker API推送到私有注册表,需要一个X-Registry-Auth头.https://groups.google.com/forum/#!topic/docker-user/vXcA8fsCNZM建议该值应为以下格式的base64编码JSON字符串:

{'username': string, 'password': string, 'email': string, 'serveraddress' : string}
Run Code Online (Sandbox Code Playgroud)

设置合适的环境变量后,我做了:

XRA=`echo "{\"username\": \"${USERNAME}\", \"password\": \"${PASSWORD}\", \"email\": \"${EMAIL_ADDRESS}\", \"serveraddress\" : \"${SERVER_ADDRESS}\"}" | base64 --wrap=0`
curl  -v --request POST --header "X-Registry-Auth: $XRA" http://$DOCKER_HOST/v1/images/$REGISTRY/$NAMESPACE/$REPOSITORY?tag=$TAG
Run Code Online (Sandbox Code Playgroud)

得到403 Forbidden回应.

也许问题只是我不知道价值应该是什么.我怎样才能确定它们?Docker似乎有办法; sudo docker push $REGISTRY/$NAMESPACE/$REPOSITORY:$TAG工作得很好.

docker docker-registry

6
推荐指数
2
解决办法
3379
查看次数

Docker本地注册表:推送失败

我正在尝试设置本地docker注册表,但在尝试将图像推送到它时遇到了麻烦.我也打开了一个github问题:https://github.com/docker/docker/issues/12405

环境

操作系统:CentOS 6.6

内核:2.6.32-504.12.2.el6.x86_64

Docker版本:

$ sudo docker version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.1
Run Code Online (Sandbox Code Playgroud)

我在公司代理(http:// domain\username:password @ proxy:port)后面.

问题

我正在使用此命令启动Docker守护程序:

sudo docker -d --insecure-registry 127.0.0.1:49500&
Run Code Online (Sandbox Code Playgroud)

我已经从docker-registry github下载了config_sample.yml文件,将其重命名为registry_config.yml,并修改了本地风格中的"storage_path"(以便指向我想要安装卷的所选目录) :

local: &local
<<: *common
storage: local
storage_path: /image
Run Code Online (Sandbox Code Playgroud)

要启动注册表(版本0.9.1),我在终端中打开另一个选项卡,然后使用该命令:

sudo docker run -t -i -p 127.0.0.1:49500:5000 -v $HOME/localRegistry/image:/image -e DOCKER_REGISTRY_CONFIG=$HOME/localRegistry/registry_config.yml --name registry registry /bin/bash
Run Code Online (Sandbox Code Playgroud)

回到第一个终端选项卡,然后我尝试将随机图像推送到本地注册表,这是我得到一些错误的地方:

$sudo docker push 127.0.0.1:49500/centos:7
INFO[1215] POST /v1.17/images/127.0.0.1:49500/centos/push?tag=7
INFO[1215] +job push(127.0.0.1:49500/centos)
INFO[1215] +job resolve_repository(127.0.0.1:49500/centos)
INFO[1215] -job …
Run Code Online (Sandbox Code Playgroud)

centos6 docker docker-registry

6
推荐指数
1
解决办法
2590
查看次数

你如何操纵docker注册表2.0和v2 API中的标签?

现在已经弃用了docker注册表的V1,我们启动了一个没有太多待办事项的v2私有仓库.问题在于我们依靠许多v1 API来管理部署标记.

截至目前,我们可以轻松列出标签:

> curl https://repo-dns:5000/username/reponame/tags/list
Run Code Online (Sandbox Code Playgroud)

但是删除标签似乎包含的不仅仅是标签,而且似乎失败了:

> curl -X DELETE https://repo-dns:5000/v2/username/reponame/manifests/tagtodelete
{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}
Run Code Online (Sandbox Code Playgroud)

还不清楚如何添加新标签 - 它过去常常像:

> echo my_image_id |curl -X PUT https://repo-dns:5000/v1/repositories/username/reponame/tags/newtag
Run Code Online (Sandbox Code Playgroud)

我查看了API文档,但不清楚如何做到这一点.

是否有可能继续添加和删除标签,如果是这样,如何?

docker docker-registry

6
推荐指数
1
解决办法
1231
查看次数

为什么我不能删除私有docker注册表(v2)中的图层?

我刚刚成功地在独立模式下安装了docker-registry,我可以使用以下命令

curl -X GET http://localhost:5000/v2/
Run Code Online (Sandbox Code Playgroud)

得到正确的结果.

但是,当我使用时

curl -X DELETE http://localhost:5000/v2/<name>/blobs/<digest>
Run Code Online (Sandbox Code Playgroud)

删除一个图层,它失败了,我得到:

{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}
Run Code Online (Sandbox Code Playgroud)

我使用docker hub的默认配置.我研究了官方配置但未能解决它.

我怎么能把它弄出来?

docker-registry

6
推荐指数
2
解决办法
3722
查看次数

Amazon ECS私有DockerHub存储库:无法解码提供的docker凭据错误

我在DockerHub上有一个私有存储库,我试图用ECS部署它.我总是得到以下错误:

Unable to decode provided docker credentials module="ecs credentials" type="dockercfg"
Run Code Online (Sandbox Code Playgroud)

或者如果我尝试使用类型的docker:

Unable to decode provided docker credentials module="ecs credentials" type="docker"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了ECS开发者论坛上提到的所有可能性.

我试过了:

ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/":{"auth":"<token>","email":"<email>"}}'
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/":{"username":"<username>","password":"<password>","email":"<email>"}}'
Run Code Online (Sandbox Code Playgroud)

而且(因为https://godoc.org/github.com/aws/amazon-ecs-agent/agent/engine/dockerauth上的文档):

ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/<username>":{"username":"<username>","password":"<password>","email":"<email>"}}'
Run Code Online (Sandbox Code Playgroud)

我也试过没有围绕JSON的''和'""相同的效果.我总是得到同样的错误.

我应该添加我从S3容器获取ecs.config工作正常.我还手动重新输入文件,以防下载文件时出现一些可疑的格式(虽然我不知道这是怎么回事,因为S3文件是一个字节流).

如果我通过SSH连接到实例并执行以下操作:

docker login --username=<username> --password=<password> --email=<email>
Run Code Online (Sandbox Code Playgroud)

然后我可以成功地拉动图像: docker pull A/B:latest

但是,即使我登录后(因此docker生成〜/ .docker/config.json文件),我仍然从ECS得到相同的错误.

我应该提到改变ecs.config文件的所有操作都按如下方式完成:

  1. 将任务数更改为0
  2. 等待完成
  3. sudo stop ecs
  4. 更改配置文件
  5. sudo start ecs
  6. 将任务数更改为1

重复...

它变得非常令人沮丧.自从编写文档以来,它应该如何工作或者它有何变化?

任何帮助,将不胜感激.

编辑

我还尝试在/etc/ecs/ecs.config.json中的JSON配置文件中设置docker auth:

{
        "EngineAuthType": "docker",
        "EngineAuthData": {
                "https://index.docker.io/v1/": {
                        "username": "<me>",
                        "password": "<password>",
                        "email": "<email>"
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

此处描述了JSON配置: …

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

6
推荐指数
1
解决办法
598
查看次数

尝试获取Docker Hub目录时范围不足

我正在尝试获取Docker hub的目录列表,但到目前为止我只是收到错误的响应.我的理解是我需要传递一个带有目录请求的持有者令牌,所以我首先获得具有相关范围的令牌:

curl -u "username:password "https://auth.docker.io/token?service=registry.docker.io&scope=registry:catalog:*"
Run Code Online (Sandbox Code Playgroud)

(这是使用我的Docker Hub帐户中的用户名/密码)

然后我将返回的令牌传递给注册表:

curl -vL -H "Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6I(...)" https://registry-1.docker.io/v2/_catalog
Run Code Online (Sandbox Code Playgroud)

为了回应这个要求,我得到了:

*   Trying 54.86.130.73...
* Connected to registry-1.docker.io (54.86.130.73) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: *.docker.io
* Server certificate: RapidSSL SHA256 CA - G3
* Server certificate: GeoTrust Global CA
> GET /v2/_catalog HTTP/1.1
> Host: registry-1.docker.io
> User-Agent: curl/7.43.0
> Accept: */*
> Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6I(...)
>
< HTTP/1.1 401 Unauthorized
HTTP/1.1 401 Unauthorized
< Content-Type: application/json; …
Run Code Online (Sandbox Code Playgroud)

docker docker-registry

6
推荐指数
1
解决办法
1908
查看次数

有没有一种简单的方法来使用 LDAP 配置 Docker Private Registry 2.0?

我正在尝试遵循该指示:

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-docker-registry-on-ubuntu-14-04

在我的 RHEL7(3.10 内核)机器上。但这是否是一种更快、最简单的连接 LDAP 的方法?我已启动 Privateregistry 2.0,并使用 TLS 自签名证书运行。我能够从外部服务器推送和拉取映像,但仍在寻找快速选项以放入我的命令中,以使注册表与 LDAP 一起运行。

现在我正在使用该命令运行我的 Docker:

docker run -d -p 5000:5000 --restart=always --name Docker_registry -v /data/docker_registry:/var/lib/registry -v /etc/docker/certs.d:/etc/docker/certs.d -e REGISTRY_HTTP_TLS_CERTIFICATE=/etc/docker/certs.d/d-l-tools.ocnet.local.crt  -e REGISTRY_HTTP_TLS_KEY=/etc/docker/certs.d/d-l-tools.ocnet.local.key registry:2
Run Code Online (Sandbox Code Playgroud)

你能帮助我吗?如果我告诉 nginx 使用 LDAP,我会收到以下错误:

nginx_1     | 2016/05/31 10:37:31 [emerg] 1#1: unknown directive "ldap_server" in /etc/nginx/conf.d/registry.conf:31
nginx_1     | nginx: [emerg] unknown directive "ldap_server" in /etc/nginx/conf.d/registry.conf:31
docker_nginx_1 exited with code 1
Run Code Online (Sandbox Code Playgroud)

似乎需要一个模块才能使用ldap,但是当nginx只是一个docker容器时如何添加它?

编辑:

我也尝试过这种方法: https: //github.com/cesanta/docker_auth

但是当我使用该命令时:

docker run --rm -it --name docker_auth -p 5001:5001 -v /data/docker_registry/docker/docker_auth-master:/config:ro -v /var/log/docker_auth:/logs cesanta/docker_auth:stable …
Run Code Online (Sandbox Code Playgroud)

ldap docker rhel7 docker-registry

6
推荐指数
1
解决办法
9375
查看次数

如何从私有Docker Registry中“删除”映像?

我正在为Docker编写API客户端,并且注册表API难以使用。我正在尝试从注册表中删除图像,但是我一直收到此错误

[ { code: 'UNSUPPORTED', message: 'The operation is unsupported.' } ]
Run Code Online (Sandbox Code Playgroud)

我要做到这一点的步骤如下,

 >  GET http://localhost:5000/v2/
  >  registry/2.0
 >  registry/2.0
 >  GET http://localhost:5000/v2/_catalog/
  >  { repositories: [ 'alpine' ] }
 >  GET http://localhost:5000/v2/alpine/tags/list
  >  { name: 'alpine', tags: [ 'latest' ] }
 >  HEAD http://localhost:5000/v2/alpine/manifests/latest
  >  sha256:df73ed0973f15f40496c148330f9b559f0a5583c03f6ac8d26adadf6f4690aff
 >  DELETE http://localhost:5000/v2/alpine/manifests/sha256:df73ed0973f15f40496c148330f9b559f0a5583c03f6ac8d26adadf6f4690aff
[ { code: 'UNSUPPORTED', message: 'The operation is unsupported.' } ]
Run Code Online (Sandbox Code Playgroud)

编辑

自找到REGISTRY_STORAGE_DELETE_ENABLED变量以来,我正在更新我的问题。

我现在这样运行注册表容器,

docker run -d -p 5000:5000 -e REGISTRY_STORAGE_DELETE_ENABLED=true --name registry2 registry
Run Code Online (Sandbox Code Playgroud)

会产生一个新的错误,

[ { code: …
Run Code Online (Sandbox Code Playgroud)

docker-registry docker-api

6
推荐指数
1
解决办法
3698
查看次数

docker用更改的Dockerfile和相同的标签推送到注册表

想象一下,我有基于Dockerfile的Docker映像,我将对其进行标记并将其推送到Docker注册表中

随着时间的流逝,我更改了Dockerfile(添加/更改新指令,...)

现在,我将再次使用与最初使用的标签相同的标签来标记新映像,并将其推入Docker注册表

  1. Docker注册表对新层有何反应?
  2. docker注册表对已更改的图层有何反应?
  3. 它将使用最新版本覆盖现有映像吗?
  4. 我应该使用其他标签来确保正确放置新图像吗?

docker docker-registry

6
推荐指数
1
解决办法
6577
查看次数

Docker登录:手动登录专用注册表时出错

我无法从CLI手动登录我的私有GitLab Docker注册表:

# docker login -u "${DOCKER_USER}" -p "${DOCKER_PASS}" "${DOCKER_URL}"
error getting credentials - err: exit status 1, out: `Cannot autolaunch D-Bus without X11 $DISPLAY`
Run Code Online (Sandbox Code Playgroud)

系统信息:

  • Ubuntu 18.04
  • docker-ce 18.03.1〜ce〜3-0〜ubuntu(来自官方仓库,没有安装脚本)

没有~/.docker/config.json任何用户,我docker login以root 用户身份执行。在Google上,我只是找到以下建议export DISPLAY:码头工人只能在GUI环境中登录到远程注册表吗?导出DISPLAY = 0:0会产生:

error getting credentials - err: exit status 1, out: `Failed to execute child process “dbus-launch” (No such file or directory)`
Run Code Online (Sandbox Code Playgroud)

我缺少一些依赖吗?否则,Docker可以正常运行,但是登录不起作用。我知道有用于存储凭据的后端,但是我不想存储凭据。我只是想对我的注册表进行身份验证以提取图像,这在Docker ootb中不起作用吗?

debian docker docker-registry docker-compose ubuntu-18.04

6
推荐指数
1
解决办法
1543
查看次数