当前位置: 首页 > 知识库问答 >
问题:

在中央大厅构建中将docker映像下载并上传到不同的存储库

彭梓
2023-03-14

我想将某些 Docker 映像设为公共(当前为私有)。所以,基本上我希望从GCR下载大厅构建(私有存储库,然后上传到dockerhub(公共存储库)

我目前的做法是在docker容器中使用docker,然后运行docker命令显式到第一个标记,然后推送到dockerhub。

码头工人现有的任何大厅资源都能自动做到这一点吗?

事实证明,你可以做到这一点。在docker-image-Resource注册表图像资源中,您需要在配置资源时在开始时设置标签。但是,我想运行一个任务,从中获取标签,然后从私有存储库下载带有标签的docker映像,然后将其上传到公共存储库。这可能吗?


共有1个答案

江坚成
2023-03-14

是的,泊坞窗映像资源可以做到这一点。你可以在github上找到很多文档/例子:https://github.com/concourse/docker-image-resource

以下是我为构建图像并将其推送到aws ecr所做的工作。

首先将其定义为管道中的一个资源,并对其进行配置。

resources:
  - name: ecr-repository
    type: docker-image
    source:
      repository: xxxx.dkr.ecr.eu-central-1.amazonaws.com/some/ecr/path

由于我是从ec2实例推送的,因此不需要设置任何凭据。当您想推送到docker hub时,您需要使用您的凭据配置资源。

因此,现在大厅知道了该资源,并且可以在作业步骤中使用。在构建/推送的情况下,您将使用如下所示的放置步骤:

- put: ecr-repository
  params:
    build: .

如果您的Dockerfile不在资源的根目录中,您可以将build设置为指向该路径,或者使用dockerfile选项。有关更多信息,请参阅文档。

或者,还有注册表图像资源。我自己还没有使用过,但是如果你已经有一个工作版本,你可以给它你拥有的人工制品,并把它推到你想要的地方。配置可能是相同的(给它url,凭据),并在放置步骤中使用它。

https://github.com/concourse/registry-image-resource

编辑:

两种资源都有一个参数“additional_flags”。为了不改变您的html" target="_blank">构建任务,您可以将图像输出为archive以及一个指定您想要推送的标签的文件。

docker save image:latest | gzip > ./outdir/image.tar.gz
echo "some foo tags" > ./outdir/tags_file

然后,您可以上传带有附加标签的图像,如下图所示

put: registry-resource
    params:
      image: ./outdir/image.tar.gz
      additional_tags: ./outdir/tags_file

当然,您必须将“outdir”指定为第一个任务中的输出和第二个任务中的输入,才能让中央大厅传输文件。

 类似资料:
  • 问题内容: 我尝试在主机上创建几个不同的目录,以尝试了解Docker,以使dockerfile井井有条。我刚运行的Dockerfile如下所示: 我的实际转速仅为1 GB。但是,当我尝试这样做时,我将向Docker守护进程3.5 GB发送构建上下文。当您继续构建Docker映像时,还有其他我不知道的事情吗?当我在主机上的其他目录中构建更多映像时,是否正在累积内存? 问题答案: Docker客户端将

  • 我正在尝试在我的笔记本电脑上创建一个swarm设置。我正在笔记本电脑上运行swarm守护进程,并作为docker节点运行2个Ubuntu14.04VM。在其中一个节点上,我可以运行swarm,并且可以连接到swarm守护进程。我可以用docker信息列出节点,并在其上生成一个容器。但是当我尝试在另一个VM节点上拉swarm映像时,我得到以下错误: 更新:这是一个不同的东西。我是在家里试的。今天早上

  • 目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个

  • 我正在使用以下方法来保存信息。 我已经删除了一些用于访问数据库的代码行。 这是日志猫的描述。 E/StorageException:已发生StorageException。发生未知错误,请检查HTTP结果代码和内部异常以获取服务器响应。代码:-13000 HttpResult:0 E/AndroidRuntime:FATAL EXCEPTION:Firebase Storage-Upload-1

  • 问题内容: 在Mac上,如何将卷装载到Docker容器? 在我的Linux机器上,这很容易。我需要做的只是运行容器时的操作。但是Mac是不同的,因为我必须运行boot2docker才能在VirtualBox中运行VM。我试过跑步 但我明白了 如果我忽略了它,仍然尝试像这样挂载在虚拟机上 我懂了 我感觉好像缺少了一些非常简单的东西,但是我无法弄清楚。任何帮助将不胜感激。 问题答案: 好的,在研究了G

  • docker是否构建--无缓存刷新更新的远程基本映像?文档似乎没有具体说明。