Dockerfile 中关于 RUN 的奇怪写法 -- 以 | 开头

ops/2024/10/23 11:34:48/

在一个大型的官方镜像中 ,我通过 docker history --no-trunc <image_id> 看到,该镜像某一步的构建过程是:

RUN |3 CUDA_VERSION=12.4.1.003 CUDA_DRIVER_VERSION=550.54.15 JETPACK_HOST_MOUNTS= /bin/sh -c if [ -n "${JETPACK_HOST_MOUNTS}" ]; then        echo "/usr/lib/aarch64-linux-gnu/tegra" > /etc/ld.so.conf.d/nvidia-tegra.conf     && echo "/usr/lib/aarch64-linux-gnu/tegra-egl" >> /etc/ld.so.conf.d/nvidia-tegra.conf;  fi

这是一个很奇怪的写法,查了一下 Linux Shell 也没有以 “|” 开头的。
于是就去问了一下 Claude,其回答如下:

  1. 开头的 |3YAML pipe operator,带一个strip chomping indicator. 在 Dockerfile 中用它可以写多行命令。
  2. 接下来是设置环境变量:
    • CUDA_VERSION=12.4.1.003
    • CUDA_DRIVER_VERSION=550.54.15
    • JETPACK_HOST_MOUNTS= (empty value)
  3. 然后再使用 /bin/sh -c 执行以下判断脚本:
    if [ -n "${JETPACK_HOST_MOUNTS}" ]; thenecho "/usr/lib/aarch64-linux-gnu/tegra" > /etc/ld.so.conf.d/nvidia-tegra.conf&& echo "/usr/lib/aarch64-linux-gnu/tegra-egl" >> /etc/ld.so.conf.d/nvidia-tegra.conf
    fi
    

它实际的作用是:

  • 检查是否 JETPACK_HOST_MOUNTS 变量是为非空 (-n)
  • 如果变量非空:
    1. 创建/覆盖 (>) /etc/ld.so.conf.d/nvidia-tegra.conf 文件,基于 /usr/lib/aarch64-linux-gnu/tegra 中的内容
    2. 添加 (>>) /usr/lib/aarch64-linux-gnu/tegra-egl 文件的内容到上面的 conf 文件。

|3 代表下方各行的缩进列数。|3 代表 “保留所有换行,并缩进三格”。

所以这里提到了一个概念:YAML pip opertor 及其 strip chomping indicator。


http://www.ppmy.cn/ops/127808.html

相关文章

springboot项目多个数据源配置 dblink

当项目中涉及到多个数据库连接的时候该如何处理&#xff1f; 在对应的配置文件&#xff0c;配置对应的数据库情况&#xff0c;不过我确实没咋测试对于事务的处理我可以后续在多做测试 配置文件中配置对应的数据源 然后再使用的时候使用这个 DS(“pd_ob”)注解。 然后又长知识…

安科瑞分布式储能监控系统在晋亿实业5MW分布式储能项目中的应用

文&#xff1a;安科瑞郑桐 摘 要&#xff1a;随着全球能源结构的转型和可再生能源的快速发展&#xff0c;储能技术逐渐成为调节能源供需、提高能源利用效率的关键环节&#xff0c;在这一背景下&#xff0c;分布式储能系统应运而生&#xff0c;成为应对能源不稳定性与波动性的有…

灵当CRM index.php 任意文件上传漏洞复现

0x01 产品描述&#xff1a; 灵当CRM是一款专为中小企业量身定制的智能客户关系管理工具&#xff0c;由上海灵当信息科技有限公司开发和运营。该系统广泛应用于多个行业&#xff0c;包括金融、教育、医疗、IT服务及房地产等领域&#xff0c;旨在满足企业对客户个性化管理的需求&…

React Native 持久化数据

在 React Native 中&#xff0c;持久化数据是指将数据保存在设备上&#xff0c;以便在应用重新启动后仍然可以访问。以下是一些常用的数据持久化方法&#xff1a; AsyncStorage&#xff1a; React Native 提供了 react-native-async-storage/async-storage 库&#xff0c;这是一…

912.排序数组

目录 题目解法步骤 1&#xff1a;调用 randomized_partition步骤 2&#xff1a;递归调用 randomized_quicksort最终结果&#xff1a;变量变化总结&#xff1a; 为什么要把主元放到最后一个&#xff1f;partition返回得到的是什么下标&#xff1f; 题目 给你一个整数数组 nums&…

3d建筑设计效果图渲染平台有哪些?瑞云快图怎么样?

在建筑设计领域&#xff0c;3d建筑设计效果图渲染平台是设计师们不可或缺的工具。这些平台能够帮助设计师们将他们的创意转化为逼真的视觉效果&#xff0c;从而更好地与客户沟通并展示设计理念。 本文将介绍一些常见的3d建筑设计效果图渲染平台&#xff0c;并重点介绍瑞云快图…

【计算机网络 - 基础问题】每日 3 题(五十三)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

这几次比赛题解

因为考虑到再看&#xff0c;所以将所有题目都做成了pdf格式 梦熊十三连测 T1 这道题其实什么也不用想&#xff0c;就按照题目给的意思来打代码就行&#xff0c;这就有40分可以拿。懒人做法 #include<bits/stdc.h> using namespace std; typedef long long ll; ll read…