标签: docker-registry

将artifactory设置为docker注册表时出现问题

我目前正在尝试在 Artifacory (v4.7.4) 中设置私有 Docker 注册表。

我已经设置了本地、远程和虚拟 docker 存储库,添加了 Apache 作为反向代理。为虚拟“docker”存储库添加了 DNS 条目。

反向代理正在工作,但如果我尝试类似的操作:

docker pull docker.my.company.com/ubuntu:16.04
Run Code Online (Sandbox Code Playgroud)

我越来越:

https://docker.my.company.com/v1/_ping:x509:证书对 *.company.com、company.com 有效,对 docker.my.company.com 无效

我的 Artifactory URL 是:“my.company.com/artifactory”,我希望可以在 repo.my.company.com/artifactory 上访问存储库。

我还有一个 company.com 的通配符证书,所以我不明白这里有什么问题。

或者有没有一种方法可以通过 http 而不使用 SSL 来访问 Artifactory

有任何想法吗?

ssl artifactory docker docker-registry

3
推荐指数
1
解决办法
1217
查看次数

当存储库有两个 Docker 镜像(客户端和服务器)时,将 Docker 镜像推送到 Gitlab 注册表

我有一个 Gitlab 存储库,它托管一个用 React / NodeJS 制作的 Web 应用程序,因此,我将客户端和服务器放在同一个存储库中。

应用程序正在运行,我想使用 Gitlab 注册表我的 Docker 映像(客户端和服务器)。

事情是我的存储库的名称是:gitlab.com/group/project

它需要一个同名的 Docker 镜像。

相反,我有两个 Docker 镜像:

  • registry.gitlab.com/group/project_api
  • registry.gitlab.com/group/project_client

所以,它不会让我推送我的图像。我得到:

被拒绝:请求的资源访问被拒绝

我该怎么做 ?我不想创建两个存储库。

gitlab docker docker-registry

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

K8S如何使用imagePullSecrets列表处理POD定义中的多个远程docker寄存器

我想访问多个远程注册表来提取图像。在 k8s文档中他们说:

(如果您需要访问多个注册表,您可以为每个注册表创建一个密钥。Kubelet 会将任何 imagePullSecret 合并到单个虚拟 .docker/config.json 中)

所以 POD 定义应该是这样的:

apiVersion: v1
kind: Pod
spec:
  containers:
    - name: ...
  imagePullSecrets:
    - name: secret1
    - name: secret2
    - ....
    - name: secretN
Run Code Online (Sandbox Code Playgroud)

现在我不确定K8S如何为每张图像选择正确的秘密?所有秘密每次都会被一一验证吗?K8S如何处理失败的重试?如果特定数量的未经授权的重试可能会导致 k8sor docker 注册表中出现某种锁定状态?

/ 谢谢

kubernetes docker-registry kubernetes-secrets

3
推荐指数
1
解决办法
2247
查看次数

Docker 私有注册表镜像上传

我正在尝试使用 HTTP API 将图像上传到我的私人 docker 注册表,不幸的是没有成功。

显然我还没有理解上传过程,想问是否有人可以详细解释这一点或将我推向正确的方向。

到目前为止,我已经尝试使用curl进行以下操作。为了进行实验,我仅使用空的高山图像。为此,我将其下载到我的工作站docker pull alpine,然后使用创建 tar 存档docker save -o alpine.tar alpine

然后我将此存档解压到 alpine 目录中。内容如下: ls -R alpine

alpine:
    39cb81dcd06e3d4e2b813f56b72da567696fa9a59b652bd477615b31af969239
    e7d92cdc71feacf90708cb59182d0df1b911f8ae022d29e8e95d75ca6a99776a.json
    manifest.json

alpine/39cb81dcd06e3d4e2b813f56b72da567696fa9a59b652bd477615b31af969239:
    json
    layer.tar
    VERSION
Run Code Online (Sandbox Code Playgroud)

根据文档,我应该首先通过向 /v2//blobs/uploads/ URL 发送 POST 来启动上传,为此我执行以下命令:

curl -X POST -L -D headers $DOCKER_HOST/v2/alpine/blobs/uploads

答案如下:

cat headers

HTTP/1.1 301 Moved Permanently
Docker distribution api version: registry/2.0
location: /v2/alpine/blobs/uploads/
Date: Tu, 21 Jan 2020 12:42:55 GMT
content length: 0

HTTP/1.1 202 Accepted
content length: 0
Docker distribution api version: …
Run Code Online (Sandbox Code Playgroud)

curl http docker docker-registry

3
推荐指数
1
解决办法
3306
查看次数

docker 缺少清单

在此输入图像描述 远程 Docker 似乎配置良好,但是当我尝试将任何映像下载到我的虚拟 docker 时,它总是失败并出现以下跟踪:

2020-04-01T16:20:32.969Z [jfrt ] [INFO ] [b6e7232e6d2e0cb4] [DockerV2VirtualRepoHandler:117] [http-nio-8081-exec-8] - Fetching docker manifest for repo 'thanosio/thanos' and tag 'latest'
2020-04-01T16:20:33.874Z [jfrt ] [ERROR] [b6e7232e6d2e0cb4] [.DockerV2RemoteRepoHandler:448] [http-nio-8081-exec-8] - Missing Manifest from docker-via-intranet 'v2/thanosio/thanos/manifests/latest' not found at docker-via-intranet:thanosio/thanos/latest/list.manifest.json
2020-04-01T16:20:34.703Z [jfrt ] [ERROR] [b6e7232e6d2e0cb4] [.DockerV2RemoteRepoHandler:448] [http-nio-8081-exec-8] - Missing Manifest from docker-remote 'v2/thanosio/thanos/manifests/latest' not found at docker-remote:thanosio/thanos/latest/list.manifest.json
2020-04-01T16:20:35.545Z [jfrt ] [ERROR] [b6e7232e6d2e0cb4] [.DockerV2RemoteRepoHandler:448] [http-nio-8081-exec-8] - Missing Manifest from quay-io 'v2/thanosio/thanos/manifests/latest' not found at quay-io:thanosio/thanos/latest/list.manifest.json
Run Code Online (Sandbox Code Playgroud)

docker-registry jfrog-container-registry

3
推荐指数
1
解决办法
5784
查看次数

从 docker hub 拉取时 Docker 镜像大小会增加

docker pull tiangolo/uwsgi-nginx-flask这样做了,docker hub 中的这个镜像大小是 345MB,但是当我将它拉到本地时,它增加到了 963MB。

所以,以下是我的问题:

  1. docker 镜像大小在拉取时会增加吗?
  2. 有什么方法可以减少或获取 docker hub 中图像的实际大小吗?

docker dockerhub docker-registry docker-compose

3
推荐指数
1
解决办法
1073
查看次数

无法拉取镜像存储库不存在或可能需要“docker 登录”:

我在启动 Pod 时收到此错误

Failed to pull image "docker-username/docker-private-repository:latest": rpc error: code = Unknown desc = Error response from daemon: pull access denied for docker-username/docker-private-repository, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Run Code Online (Sandbox Code Playgroud)

我的设置如下:

使用命令行创建秘密服务

kubectl create secret docker-registry docker-keys --docker-username=docker-username --docker-password=password --docker-email=docker-email@gmail.com --docker-server=https://index.docker.io/v1
Run Code Online (Sandbox Code Playgroud)

它会在机密内生成以下数据

kubectl get secret docker-keys -o json | jq '.data | map_values(@base64d)'
{
  ".dockerconfigjson": "{\"auths\":{\"https://index.docker.io/v1\":{\"username\":\"docker-username\",\"password\":\"password\",\"email\":\"docker-email@gmail.com\",\"auth\":\"base64encodedtoken\"}}}"
}

Run Code Online (Sandbox Code Playgroud)

然后在部署中我使用docker-keys秘密

apiVersion: apps/v1
kind: Deployment
metadata:
  name: docker-private-repository
  labels:
    app: …
Run Code Online (Sandbox Code Playgroud)

kubernetes docker-registry minikube kubernetes-secrets

3
推荐指数
1
解决办法
7130
查看次数

如何启用 GitLab 容器注册表并在其中推送 docker 镜像

使用域方法在 GitLab Community Edition 14.2.4 中启用容器注册表的具体步骤是什么,以及如何将 docker 映像推送到注册表?另外,如何将 GitLab CI 与注册表集成?

仅指定以下字符串(如“在其域下配置容器注册表”中所述)不适用于 GitLab 社区版 14.2.4

registry_external_url 'registry.gitlab.example.com'
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci docker-registry gitlab-ce

3
推荐指数
1
解决办法
7365
查看次数

Docker Hub API v2令牌认证问题

目前,我正在开发一个非常轻量级的Docker容器编排器,而且我必须能够从公共Docker Hub注册表中获取映像摘要。我想为此使用Docker Registry API v2。

我正在尝试使用以下API调用获取授权令牌:

curl https://auth.docker.io/token?service=index.docker.io&scope=repository:alpine:pull
Run Code Online (Sandbox Code Playgroud)

...,我得到如下响应:

{"token":"eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDTHpDQ0FkU2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXp0Uk5Gb3pPa2RYTjBrNldGUlFSRHBJVFRSUk9rOVVWRmc2TmtGRlF6cFNUVE5ET2tGU01rTTZUMFkzTnpwQ1ZrVkJPa2xHUlVrNlExazFTekFlRncweE5qQTFNekV5TXpVNE5UZGFGdzB4TnpBMU16RXlNelU0TlRkYU1FWXhSREJDQmdOVkJBTVRPMUV6UzFRNlFqSkpNenBhUjFoT09qSlhXRTA2UTBWWFF6cFVNMHhPT2tvMlYxWTZNbGsyVHpwWlFWbEpPbGhQVTBRNlZFUlJTVG8wVWtwRE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVo0NkVLV3VKSXhxOThuUC9GWEU3U3VyOXlkZ3c3K2FkcndxeGlxN004VHFUa0N0dzBQZm1SS2VLdExwaXNTRFU4LzZseWZ3QUFwZWh6SHdtWmxZR2dxT0JzakNCcnpBT0JnTlZIUThCQWY4RUJBTUNCNEF3RHdZRFZSMGxCQWd3QmdZRVZSMGxBREJFQmdOVkhRNEVQUVE3VVROTFZEcENNa2t6T2xwSFdFNDZNbGRZVFRwRFJWZERPbFF6VEU0NlNqWlhWam95V1RaUE9sbEJXVWs2V0U5VFJEcFVSRkZKT2pSU1NrTXdSZ1lEVlIwakJEOHdQWUE3VVRSYU16cEhWemRKT2xoVVVFUTZTRTAwVVRwUFZGUllPalpCUlVNNlVrMHpRenBCVWpKRE9rOUdOemM2UWxaRlFUcEpSa1ZKT2tOWk5Vc3dDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBTzYxSWloN1FUcHNTMFFIYUNwTDFZTWNMMnZXZlNydlhHbHpSRDEwN2NRUEFpRUFtZXduelNYRHplRGxqcDc4T1NsTFFzbnROYWM5eHRyYW0xU0kxY0ZXQ2tJPSJdfQ.eyJhY2Nlc3MiOltdLCJhdWQiOiJpbmRleC5kb2NrZXIuaW8iLCJleHAiOjE0NzQ1NDcyODMsImlhdCI6MTQ3NDU0Njk4MywiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiIzVTdCazF4dm9CLVA0MGJWVF9JSiIsIm5iZiI6MTQ3NDU0Njk4Mywic3ViIjoiIn0.516fS692WGHNi5Sc44iB8OFSLairrM6n1zNvVo5KXAxlsxsP4rE7VDmW5d0YqvTYeKfZAYIi9yEptx4xJlQ6DA"}
Run Code Online (Sandbox Code Playgroud)

似乎一切正常,我正在尝试将获得的令牌用于下一个API调用:

curl -i -H "Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlDTHpDQ0FkU2dBd0lCQWdJQkFEQUtCZ2dxaGtqT1BRUURBakJHTVVRd1FnWURWUVFERXp0Uk5Gb3pPa2RYTjBrNldGUlFSRHBJVFRSUk9rOVVWRmc2TmtGRlF6cFNUVE5ET2tGU01rTTZUMFkzTnpwQ1ZrVkJPa2xHUlVrNlExazFTekFlRncweE5qQTFNekV5TXpVNE5UZGFGdzB4TnpBMU16RXlNelU0TlRkYU1FWXhSREJDQmdOVkJBTVRPMUV6UzFRNlFqSkpNenBhUjFoT09qSlhXRTA2UTBWWFF6cFVNMHhPT2tvMlYxWTZNbGsyVHpwWlFWbEpPbGhQVTBRNlZFUlJTVG8wVWtwRE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVo0NkVLV3VKSXhxOThuUC9GWEU3U3VyOXlkZ3c3K2FkcndxeGlxN004VHFUa0N0dzBQZm1SS2VLdExwaXNTRFU4LzZseWZ3QUFwZWh6SHdtWmxZR2dxT0JzakNCcnpBT0JnTlZIUThCQWY4RUJBTUNCNEF3RHdZRFZSMGxCQWd3QmdZRVZSMGxBREJFQmdOVkhRNEVQUVE3VVROTFZEcENNa2t6T2xwSFdFNDZNbGRZVFRwRFJWZERPbFF6VEU0NlNqWlhWam95V1RaUE9sbEJXVWs2V0U5VFJEcFVSRkZKT2pSU1NrTXdSZ1lEVlIwakJEOHdQWUE3VVRSYU16cEhWemRKT2xoVVVFUTZTRTAwVVRwUFZGUllPalpCUlVNNlVrMHpRenBCVWpKRE9rOUdOemM2UWxaRlFUcEpSa1ZKT2tOWk5Vc3dDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBTzYxSWloN1FUcHNTMFFIYUNwTDFZTWNMMnZXZlNydlhHbHpSRDEwN2NRUEFpRUFtZXduelNYRHplRGxqcDc4T1NsTFFzbnROYWM5eHRyYW0xU0kxY0ZXQ2tJPSJdfQ.eyJhY2Nlc3MiOltdLCJhdWQiOiJpbmRleC5kb2NrZXIuaW8iLCJleHAiOjE0NzQ1NDcyODMsImlhdCI6MTQ3NDU0Njk4MywiaXNzIjoiYXV0aC5kb2NrZXIuaW8iLCJqdGkiOiIzVTdCazF4dm9CLVA0MGJWVF9JSiIsIm5iZiI6MTQ3NDU0Njk4Mywic3ViIjoiIn0.516fS692WGHNi5Sc44iB8OFSLairrM6n1zNvVo5KXAxlsxsP4rE7VDmW5d0YqvTYeKfZAYIi9yEptx4xJlQ6DA" https://index.docker.io/v2/alpine/manifests/latest
Run Code Online (Sandbox Code Playgroud)

...而我得到的是:

HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8
Docker-Distribution-Api-Version: registry/2.0
Www-Authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:alpine:pull",error="invalid_token"
Date: Thu, 22 Sep 2016 12:27:54 GMT
Content-Length: 138
Strict-Transport-Security: max-age=31536000

{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Name":"alpine","Action":"pull"}]}]}
Run Code Online (Sandbox Code Playgroud)

有人知道为什么令牌般的迷惑对于如此简单的流程会失败吗?

authentication docker docker-registry

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

如何阻止Docker注册表?

我想阻止对默认docker.io注册表的访问。为了安全/ IP保护,我们需要阻止对公共Docker集线器的推/拉访问。

已经有很多尝试将其设置为配置选项,但是所有PR都一直被拒绝。红帽已经实现了“ --block-registry”和“ --add-registry”,这正是我所需要的,但是它仅适用于Red Hat的docker v1.10的fork,我想使用docker v1。 12+

我正在使用RHEL / Centos 7

通过/ etc / hosts中的以下命令,DNS欺骗似乎不再起作用(不再):

127.0.0.1 index.docker.io registry.docker.io registry-1.docker.io docker.io
Run Code Online (Sandbox Code Playgroud)

而且我似乎无法通过以下规则来阻止防火墙访问(其中,IP地址当前是来自/ etc / hosts中列出的上述主机的IP):

# firewall-cmd --direct --get-rules ipv4 filter OUTPUT                                                                           
0 -p tcp -m tcp --dport 5000 -j REJECT
0 -p tcp -m tcp --dport 443 -j REJECT
0 -p tcp -m tcp -d 52.207.178.113 -j DROP
0 -p tcp -m tcp -d 52.73.159.23 -j DROP
0 -p tcp -m tcp -d 54.85.12.131 …
Run Code Online (Sandbox Code Playgroud)

registry docker docker-registry

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