标签: docker-registry

Docker私有注册表与镜像

我创建了两个Docker容器.第一个提供私有Docker注册表,第二个是官方Docker注册表的镜像:

docker run -d --name registry -v /local/path/to/registry:/registry -e SETTINGS_FLAVOR=local -e STORAGE_PATH=/registry -p 5000:5000 registry

docker run -d --name mirror -v /local/path/to/mirror:/registry -e STORAGE_PATH=/registry -e STANDALONE=false -e MIRROR_SOURCE=https:/registry-1.docker.io -e MIRROR_SOURCE_INDEX=https://index.docker.io -p 5555:5000 registry
Run Code Online (Sandbox Code Playgroud)

现在我想两者结合起来.每当用户提取图像时,它应首先查询私有注册表,然后查询镜像.当图像被推送时,它们应该只被推送到私人注册表.

我不知道如何做到这一点.任何帮助表示赞赏.

docker docker-registry

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

如何在构建时让docker从私有存储库中取出

有没有办法在私有注册表中提取图像docker build而不是docker hub?

我部署了一个私有注册表,我希望能够避免ip:port在Dockerfile的FROM指令中命名其特定的.我期待一个docker build选项或docker环境变量来更改默认注册表.

docker dockerfile docker-registry docker-trusted-registry

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

docker push error"被拒绝:请求访问资源被拒绝"

尝试将映像推送到Docker Hub上的公用存储库时,会发生此错误.我尝试过的其他注册管理机构没有任何问题.

我查看了很多网站,包括StackOverflow在内的博客,但仍然没有明确的答案.

您可以尝试按如下方式复制此问题.

本地主机上的图像

如上面的屏幕截图所示,我aspc-mvc-app在本地docker主机上有一个图像.如图所示,它有3个标签- 1.0.5,1.0.5.latestlatest.

假设我们正在尝试使用janedoeDocker Hub 的帐户名称

根据Docker.io和许多其他网站的文档,推送有3个步骤.

(1)登录

docker login "index.docker.io" -u janedoe -p <password>
Run Code Online (Sandbox Code Playgroud)

- >我觉得Login Succeeded哪个好!

(2)添加一个或多个标签

在3个标签中,让我们只标记latest.

docker tag janedoe/aspc-mvc-app:latest janedoe/aspc-mvc-app
Run Code Online (Sandbox Code Playgroud)

- >提示返回,没有错误.到现在为止还挺好.

(3)推

docker push janedoe/aspc-mvc-app
Run Code Online (Sandbox Code Playgroud)

- >这是发生错误的地方.

如下面的屏幕截图所示,初始检查似乎正常,直到您收到错误消息:拒绝请求访问资源

在此输入图像描述

在步骤(2),我尝试了许多其他格式,包括以下内容.

docker tag janedoe/aspc-mvc-app:latest janedoe/aspc-mvc-app:latest
docker tag janedoe/aspc-mvc-app janedoe/aspc-mvc-app:latest

docker tag aspc-mvc-app:latest janedoe/aspc-mvc-app
docker tag aspc-mvc-app janedoe/aspc-mvc-app:latest

docker tag 306a8fd79d88 janedoe/aspc-mvc-app
docker tag 306a8fd79d88 …
Run Code Online (Sandbox Code Playgroud)

docker dockerhub docker-registry

15
推荐指数
5
解决办法
2万
查看次数

如何将 docker compose 推送到 docker hub

我的 docker-compose 文件中有多项服务,它看起来像这样:

version: '3.7'

services:
  web:
    build: ./
    command: gunicorn --bind 0.0.0.0:5000 --workers 2 --worker-connections 5000 --timeout 6000 manage:app
    volumes:
      - ./:/usr/src/app/
      - static_volume:/usr/src/app/static_files
    expose:
      - 5000
    env_file:
      - ./.env.prod
    depends_on:
      - mongodb

  mongodb:
    image: mongo:4.4.1
    restart: unless-stopped
    command: mongod
    ports:
      - '27017:27017'
    environment:
      MONGODB_DATA_DIR: /data/db
      MONDODB_LOG_DIR: /dev/null
      MONGO_INITDB_ROOT_USERNAME: 
      MONGO_INITDB_ROOT_PASSWORD: 
    volumes:
      - mongodbdata:/data/db

  nginx:
    build: ./nginx
    volumes:
      - static_volume:/usr/src/app/static_files
    ports:
      - 5001:8000
    depends_on:
      - web


volumes:
  mongodbdata: 
  static_volume: 
Run Code Online (Sandbox Code Playgroud)

我的 docker hub 帐户上有公共存储库,我想将我的应用程序中的所有图像推送到该存储库,任何人都可以提供帮助吗?

docker dockerfile docker-registry docker-compose

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

如何在docker registry v2中标记图像

我们的CI-CD中有逻辑标记(通过REST)将图像分级到最新(如果测试成功).这适用于注册表v1.

现在转移到v2 api,我在文档中找不到如何在注册表中"添加"标签到现有图像..我在一个步骤,可以带来一些临时图像的"清单",但不知道如何添加标签和http发布它.试图发送以下输入

  1. "tag":"staging","latest",

  2. "tag":["staging","latest"]等等

    {"schemaVersion":1,"name":"configservice","tag":"staging","architecture":"amd64","fsLayers":[....

docker docker-registry

14
推荐指数
5
解决办法
5495
查看次数

如何解析Docker图像名称?

在执行docker push或拉动图像时,Docker如何确定图像名称中是否存在注册服务器,或者它是默认注册表(例如Docker Hub)上的路径/用户名?

我从1.1图像规范中看到以下内容:

标签

标记用于将描述性的,用户指定的名称映射到任何单个图像ID.标签值仅限于字符集[a-zA-Z_0-9].

知识库

在公共前缀(名称组件:)之前分组的标签集合.例如,在标记为my-app:3.1.4的图像中,my-app是名称的Repository组件.存储库名称由斜杠分隔的名称组件组成,可选地以DNS主机名为前缀.主机名必须遵循标准DNS规则,但可能不包含_字符.如果存在主机名,则可以选择后跟以下格式的端口号:8080.名称组件可能包含小写字符,数字和分隔符.分隔符定义为句点,一个或两个下划线,或一个或多个破折号.名称组件不能以分隔符开头或结尾.

对于DNS主机名,是否需要使用点完全限定,或者"my-local-server"是否为有效的注册表主机名?对于名称组件,我看到句点有效,这意味着"team.user/appserver"是有效的图像名称.如果注册表服务器在端口80上运行,因此图像名称中的主机名上不需要端口号,则主机名和注册表服务器上的路径之间似乎存在歧义.我很好奇Docker如何解决这种模棱两可的问题.

docker docker-registry

14
推荐指数
1
解决办法
5343
查看次数

Docker并行操作限制

您可以执行并行Docker推/拉的数量是否有限制?

例如,如果您使用Docker pull/push命令进行操作,以便它们同时拉/推不同的图像,那么并行推/拉的数量就是上限

或者

在一个终端上你做docker pull ubuntu在另一个你做docker pull httpd等 - Docker会支持什么限制?

concurrency docker dockerfile docker-registry

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

如何使用Docker Registry API V2从私有注册表中删除图像?

给定一个码头工人登记localhost:5000,我如何可以使用泊坞注册HTTP API V2卷曲删除busybox:latest具有以下清单头和清单:

derek@derekmahar-ubuntu-512mb-tor1-01:~/Projects/docker-registry$ curl --head --request GET http://localhost:5000/v2/busybox/manifests/latest
HTTP/1.1 200 OK
Content-Length: 2561
Content-Type: application/vnd.docker.distribution.manifest.v1+prettyjws
Docker-Content-Digest: sha256:e45f25b1760f616e65f106b424f4ef29185fbd80822255d79dabc73b8eb715ad
Docker-Distribution-Api-Version: registry/2.0
Etag: "sha256:e45f25b1760f616e65f106b424f4ef29185fbd80822255d79dabc73b8eb715ad"
X-Content-Type-Options: nosniff
Date: Wed, 04 May 2016 16:10:00 GMT

derek@derekmahar-ubuntu-512mb-tor1-01:~/Projects/docker-registry$ curl --request GET http://localhost:5000/v2/busybox/manifests/latest
{
   "schemaVersion": 1,
   "name": "busybox",
   "tag": "latest",
   "architecture": "amd64",
   "fsLayers": [
      {
         "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
      },
      {
         "blobSum": "sha256:385e281300cc6d88bdd155e0931fbdfbb1801c2b0265340a40481ee2b733ae66"
      }
   ],
   "history": [
      {
         "v1Compatibility": "{\"architecture\":\"amd64\",\"config\":{\"Hostname\":\"156e10b83429\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":[\"sh\"],\"Image\":\"56ed16bd6310cca65920c653a9bb22de6b235990dcaa1742ff839867aed730e5\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"container\":\"5f8098ec29947b5bea80483cd3275008911ce87438fed628e34ec0c522665510\",\"container_config\":{\"Hostname\":\"156e10b83429\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":null,\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) CMD [\\\"sh\\\"]\"],\"Image\":\"56ed16bd6310cca65920c653a9bb22de6b235990dcaa1742ff839867aed730e5\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"created\":\"2016-03-18T18:22:48.810791943Z\",\"docker_version\":\"1.9.1\",\"id\":\"437595becdebaaaf3a4fc3db02c59a980f955dee825c153308c670610bb694e1\",\"os\":\"linux\",\"parent\":\"920777304d1d5e337bc59877253e946f224df5aae64c72538672eb74637b3c9e\"}"
      },
      {
         "v1Compatibility": "{\"id\":\"920777304d1d5e337bc59877253e946f224df5aae64c72538672eb74637b3c9e\",\"created\":\"2016-03-18T18:22:48.262403239Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) ADD …
Run Code Online (Sandbox Code Playgroud)

docker docker-registry

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

13
推荐指数
4
解决办法
3420
查看次数

docker push 失败:清单无效

尝试对docker push <IMAGE>私有 Docker 映像注册表执行操作时,收到错误提示清单无效

随着错误,它给出 some [DEPRECATION NOTICE],这也可能是失败的原因。

注意:在收到此错误并且docker push命令失败后。(ci/cd因为它没有完成这项工作,我猜它正在抛出exit 1),当我在注册表中查看时,图像存在。

在同一个 docker 注册表中,还有其他图像存在。他们也经历了相同的 CI/CD 管道。但对他们来说,没有检测到问题。问题是否有可能源于Dockerfile?(虽然它以前可以工作,但使用相同的 Dockerfile

我已经仔细检查过,我正在推送的图像version(例如<IMAGE_NAME>:0.0.1-5e90df92ed140-development:)不在注册表中。

我还提到了与此相关的多个问题和问题,并交叉检查了

  • 用户有权推拉图像
  • 具有相同数量的清单fsLayers作为history

注意:我们使用的是JFrog Artifactory 版本到 6.12.2

Docker 版本(在我的本地机器上,它也失败了。带有相同的消息):

Client: Docker Engine - Community
 Version:           19.03.4
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        9013bf5
 Built:             Thu Oct 17 23:44:48 2019
 OS/Arch:           darwin/amd64
 Experimental:      false …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-registry

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