在 Ansible 中使用 BuildKit 进行 docker 构建

2024-02-25

我正在使用这个 Ansible 模块community.docker.docker_image构建 docker 镜像。我想用--secret标志,因此我需要启用 BuildKit。

我确实编辑了/etc/docker/daemon.json文件并添加了这一行"features": { "buildkit": true }然后重新启动docker服务。

但是Ansible运行时仍然报错;

fatal: [localhost]: FAILED! => {"changed": false, "msg": "Error building local:5000/test - code: None, message: the --mount option requires BuildKit. Refer to https://docs.docker.com/go/buildkit/ to learn how to build images with BuildKit enabled ...

可靠的任务:

- name: Build an image and push it to a private repo
  community.docker.docker_image:
    build:
      path: "{{ role_path }}/files/test"
      args:
        secret: 'id=test_app_secret_id,src={{ tempfile_1.path }}'
    name: local:5000/test
    tag: v1.1.2
    push: yes
    force_tag: yes
    source: build

在 Dockerfile 中,我使用的秘密如下:

RUN --mount=type=secret,id=test_app_secret_id

关于如何解决这个问题有什么想法吗?


Ansible 不支持使用 buildkit 进行构建(截至 2023 年 11 月 21 日...)community.docker.docker_image模块。引用文档中的注释 https://docs.ansible.com/ansible/latest/collections/community/docker/docker_image_module.html#notes

构建镜像是使用 Docker 守护进程的 API 完成的。不可能以这种方式使用 BuildKit / buildx。

所以暂时的解决方案是通过 shell 设置正确的环境。就像是:

- name: Build an image with BuildKit and push it to a private repo
  vars:
    image: local:5000/test
    tag: v1.1.2
  ansible.builtin.shell:
    cmd: |-
      docker build --secret "id=test_app_secret_id,src={{ tempfile_1.path }}" -t {{ image }}:{{ tag }} .
      docker push {{ image }}:{{ tag }}
    chdir: "{{ role_path }}/files/test"
    environment: 
      DOCKER_BUILDKIT: 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Ansible 中使用 BuildKit 进行 docker 构建 的相关文章

  • Vagrant、共享文件夹:利用 inotify 而非 NFS

    我们的 Symfony2 Web 应用程序在开发模式下使用 Assetic 观察器来动态重新编译资产 Web 应用程序在 Docker 容器中运行 该容器在 Vagrant VM Ubuntu 12 04 Precise 中运行 主机是 O
  • 如何在 Docker SQL Server 映像上运行安装脚本?

    我正在尝试在 Docker SQL Server 映像上运行安装脚本 为此 我从 mssql 映像创建了一个 Dockerfile FROM microsoft mssql server linux 2017 CU8 Create dire
  • 如何使用yarn工作空间从monorepo中的nodejs项目构建docker镜像

    我们目前正在与我们的团队一起研究网站的 CI CD 我们最近还适应了 monorepo 结构 因为这使我们的依赖关系和概述变得更加容易 目前测试等已为 CI 做好准备 但我现在正在部署 我想创建所需包的 docker 镜像 我考虑过的事情
  • 多个 Docker 容器和 Celery

    我们现在的项目结构如下 处理来自客户端的传入请求的 Web 服务器 向用户提供一些建议的分析模块 我们决定保持这些模块完全独立 并将它们移动到不同的 docker 容器中 当用户的查询到达网络服务器时 它会向分析模块发送另一个查询以获取推荐
  • Dockerfile“RUN chmod”未生效

    其他一切都生效 但权限没有改变 我错过了什么吗 FROM joomla 3 9 php7 2 apache RUN apt get update apt get install y apt utils vim curl COPY jooml
  • 如何增加/检查 Linux 上 Docker 的默认内存?

    我发现在 Windows 和 Mac 上 更改给定的 RAM 容器非常容易 您只需进入 GUI 即可 但是如何在 Linux 上执行此操作 使用 CLI 而不是 GUI 呢 Docker 文档提到了 m标志 但这个标志没有给出任何响应 只是
  • Docker Engine可以并行启动容器吗

    如果我有并行发出 docker run 命令的脚本 则 docker 引擎似乎会串行处理这些命令 由于使用 docker run 运行最小的容器映像需要大约 100 毫秒才能启动 这是否意味着并行发出命令来运行 1000 个容器将花费 do
  • Docker 无法写入使用 -v 挂载的目录,除非它有 777 权限

    我正在使用docker solr https github com makuk66 docker solr使用 docker 生成图像 我需要在其中安装一个目录 这是我使用 v flag 问题是容器需要写入我已安装到其中的目录 但似乎没有权
  • 如何使用Vault在Ansible中运行playbook api

    我有一本带有Vault的剧本 我可以运行它 ansible playbook info yml ask vault pass 现在 我想在 Ansible 中运行我的 playbook api 答案在如何使用Vault在Ansible v2
  • 如何在 Docker 容器中运行 Nginx 而不停止?

    我在 Docker 容器上安装了 Nginx 并尝试像这样运行它 docker run i t p 80 80 mydockerimage usr sbin nginx 问题是 Nginx 的工作方式是 初始进程立即生成一个 Nginx 主
  • openssh-server 未在 Docker 容器中启动

    我有一个奇怪的问题 我无法 ssh 到具有 IP 地址的 docker 容器172 17 0 61 我收到以下错误 ssh 172 17 0 61 ssh connect to host 172 17 0 61 port 22 Connec
  • 端口不是所有 Docker 网络都通用的吗?

    我创建了两个docker网络 中国网络 docker network create subnet 172 19 0 0 16 chnetwork 内部网络 docker network create internal subnet 10 1
  • 命名 Docker 卷以共享构建而不更新

    我工作的公司的开发人员要求我用 Docker 做一些不同的事情 然后我也被使用了 目标是拥有 2 个具有以下职责的容器 容器A 节点容器将构建前端 React 应用程序并将捆绑包放入名为的目录中app dist 完成后 容器将停止运行 容器
  • 我无法在 docker 中安装 opencv-contrib-python

    我尝试安装opencv contrib python但我无法让它在 docker 上工作 它说找不到满足 opencv contrib python 要求的版本 I tried pip install opencv contrib pyth
  • 挂载卷时无法运行 mariadb

    使用以下 docker compose yml 文件 version 2 services wordpress image wordpress ports 8080 80 environment WORDPRESS DB NAME my d
  • 如何使用 compose 将 docker 卷安装到我的 docker 项目中?

    我有一个 Maven 项目 我正在 Docker 内运行 Maven 构建 但问题是 每次运行它时 它都会下载所有 Maven 依赖项 并且不会缓存任何 Maven 下载 我找到了一些解决方法 将本地 m2 文件夹挂载到 Docker 容器
  • 如何基于现有镜像创建新的docker镜像?

    我刚刚开始使用docker 我使用 docker 文件创建图像 如何从现有图像创建新图像 假设你有一个容器bd91ca3ca3c8正在运行 并且您希望在容器中进行更改后创建一个新映像 生成另一个图像将允许您保留您的更改 在这种情况下你可以运
  • Docker:内存文件系统

    我有一个 docker 容器 它对磁盘进行大量读 写操作 我想测试当我的整个 docker 文件系统都在内存中时会发生什么 我在这里看到一些答案说这不会是真正的性能改进 但这是为了测试 我想测试的理想解决方案是共享每个图像的公共部分 并在需
  • 使用“容器ip”连接到docker容器

    我在 mac 上运行 docker 我想使用 docker 容器的 ip 不是虚拟机的 ip 连接到它 原因是 Spark 驱动程序将自身注册到容器 IP 172 17 0 2 并且从 mac 运行的客户端尝试连接到该地址 有没有办法从 m
  • PyCharm 无法解析 docker-compose.yml 以添加 Python 解释器,似乎正在使用旧版本

    我正在设置 PyCharm 的新实例 并想使用 docker compose 设置 Python 解释器 但 PyCharm 似乎不喜欢我的 docker compose 版本 首先 在 构建 执行 部署 gt Docker gt 工具 中

随机推荐

  • PayPal 与 REST PHP 返回错误 400

    我正在 PHP 中使用 REST API 来尝试创建 PayPal 购买 但每当运行它时 我只会收到一般的 400 错误 显然这意味着错误的请求 但几乎没有给出任何细节 这是我的代码的主要部分 define PP CONFIG PATH v
  • 将文件“移动”到包含路径列表中意味着什么?

    在 Zend Framework 初学者指南 一书中 它说 的内容library 目录应该移动到 PHP 中的某个位置 include 路径 列表 我不明白 不包括引用特定位置中特定目录的路径保留值 是这个意思吗 或者我是否必须将文件夹移动
  • Matplotlib Pandas 日期时间频率

    我正在尝试使用 matplotlib 绘制一些数据 并希望减少显示的 DateTime x 轴刻度数 我能够使用 plt locator 将垃圾箱的数量减少一半 但日期时间与条形不对齐 有什么办法可以解决这个问题吗 我希望只显示 10 个刻
  • 使用javascript或jquery动态添加Div到html页面

    我想要一个主 div 并且能够动态添加与主 div 处于同一级别的新 div 像这样的事情 div div div div 任何帮助都会很棒 parent div append div div 或者如果你想要新创建的 div s 出现在其他
  • 使用 XOR 和补码解析位

    当向量中的所有其他数字恰好出现三次时 我无法找到仅出现一次的数字 class Solution public int singleNumber vector
  • JSP EL 和自动完成

    在我的 servlet 中 request setAttribute list myList 在我的 Jsp 中
  • 适用于 Android 的 Firebase Cloud Messaging 中的 InvalidRegistration 错误

    我正在开发一个使用推送通知功能的 Android 应用程序 我需要从服务器推送 我使用 Firebase 这是我第一次使用 Firebase 但是当我使用 PHP 和 CURL 从服务器推送时 它给了我无效的注册错误 我像这样在 Andro
  • 将配置单元行分组到此行的数组中

    我有一个如下表 User String Alias String JohnDoe John JohnDoe JDoe Roger Roger 我想将用户的所有别名分组在一个数组中 在一个新表中 如下所示 User String Alias
  • 使用 Openshift 的裸域

    我在使用 Google 的 GAE 云产品时遇到的最大问题之一是它无法处理裸域 它可以处理子域 www 但不能处理裸域 这是一个大问题 因为您的应用程序将无法处理客户端请求中的 PATH 或子目录 因为它在 DNS 转发到 www 子域期间
  • 在 R 中创建空间集群 LISA 地图

    我想创建一张显示现象的局部空间集群的地图 最好使用局部莫兰 LISA 在下面的可重现示例中 我使用以下方法计算本地莫兰指数spdep但我想知道是否有简单的方法来映射簇 最好使用ggplot2 Help library UScensus200
  • 即使添加控制台插件后,console.log 在 iOS Phonegap 应用程序中也不起作用

    我在 Cordova CLI 中创建了一个 Phonegap iOS 应用程序 我已经添加了控制台插件 是的 deviceready 被成功调用 但是 console log 不起作用并且不会在 XCode 日志中打印任何内容 插件安装 科
  • AWS X-Ray GoLang Lambda 到 lambda 跟踪并显示在服务地图中

    我有一个 API 网关 它在 Go 中调用 Lambda 函数 1 和 Lambda 函数 2 我想看到这两个函数加入到服务映射中 到目前为止 我能够做到这一点的唯一方法是创建一个自定义分段 例如称为 父级 并从此上下文创建一个子分段 例如
  • 无法让 pip install 在 EMR 集群上运行

    我有一个 EMR emr 5 30 0 集群 我尝试从 S3 中的引导文件启动 引导程序文件的内容是 bin bash sudo pip3 install user matplotlib pandas pyarrow pyspark 我的
  • Android 4.4 KitKat 未收到 cookie

    在我的应用程序中 我向服务器发送 POST 请求 并从服务器接收响应 我从响应中收集了不同的 cookie 特别是用户信息 因此 我发送登录请求并在服务器响应后接收 cookie 以保持登录 在 Android 4 3 及更低版本中 我可以
  • Web 服务作为 JAR 文件,还是另一个 WAR 中的 WAR?

    我有一个在 Tomcat 6 上运行的 SOAP Web 服务 使用 Spring Web Services Java 现在我想将此 Web 服务合并到另一个大型 Web 应用程序中 使用 Spring Java 而不是 Web 服务 并使
  • 如何使用 mDNS 将所有子域路由到单个主机?

    我有一个开发网络服务器托管为 myhost local 它是使用 Bonjour mDNS 找到的 服务器正在运行 avahi daemon 网络服务器还希望处理其自身的任何子域 例如 cat myhost local 和 dog myho
  • 如何在Java中将一个双精度数按点分割成两个十进制数?

    尝试按点将双精度数分成两个小数部分 像这样 1 9变成1和9 0 16分为0和16 这就是我所做的 但似乎有点多余 最好的方法是什么 原始编号始终为 Just 0 x 或 1 x 或 0 xx 或 1 xx 且 xx gt 10 doubl
  • 从 KeyMembers 中获取身份字段

    我想得到KeyMembers我在 Edmx 中设置的位置StoreGeneratedPattern to Identity有没有办法做到这一点 我可以使用以下代码获取 KeyMembers private static IEnumerabl
  • Flink 中的水印和触发器有什么区别?

    我读到 排序运算符必须缓冲它接收到的所有元素 然后 当它接收到水印时 它可以对时间戳低于水印的所有元素进行排序 并按排序顺序发出它们 这是正确 因为水印表明不能有更多元素到达并与已排序元素混合 https cwiki apache org
  • 在 Ansible 中使用 BuildKit 进行 docker 构建

    我正在使用这个 Ansible 模块community docker docker image构建 docker 镜像 我想用 secret标志 因此我需要启用 BuildKit 我确实编辑了 etc docker daemon json文