Dockerfile 中的 setfacl 没有效果

2024-04-06

我想在使用 setfacl 构建 docker 映像时为某些文件夹设置默认 acl,但它没有效果。默认 acl 不变。我的目标是在 /opt 中创建的每个文件都必须对任何用户都具有 rwX 权限,因为该映像稍后将使用任意 uid 运行,并且需要对 /opt 的完全访问权限。

这是一个简单的 Dockerfile 示例

FROM ubuntu:bionic
SHELL ["/bin/bash", "-c"]
RUN apt-get update > /dev/null && apt-get install -y --no-install-recommends acl > /dev/null
RUN chmod -R a+rwXs /opt
RUN setfacl -d -m o::rwx /opt
RUN getfacl /opt

输出是

# file: opt
# owner: root
# group: root
# flags: ss-
user::rwx
group::rwx
other::rwx

这是错误的,缺少默认的 acl。但如果我手动运行容器中的命令,它就会起作用

docker run -ti --rm ubuntu:bionic bash
root@636bf8fdba41:/# apt-get update > /dev/null && apt-get install -y --no-install-recommends acl > /dev/null
debconf: delaying package configuration, since apt-utils is not installed
root@636bf8fdba41:/# chmod -R a+rwXs /opt
root@636bf8fdba41:/# setfacl -d -m o::rwx /opt
root@636bf8fdba41:/# getfacl /opt
getfacl: Removing leading '/' from absolute path names
# file: opt
# owner: root
# group: root
# flags: ss-
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx

知道为什么 docker 在 Dockerfile 中运行 setfacl 时没有正确应用 acl 更改吗?

Docker 版本 19.03.5,内部版本 633a0ea838 Ubuntu 18.04 作为主机


知道为什么 docker 在 Dockerfile 中运行 setfacl 时没有正确应用 acl 更改吗?

不要将此视为权威答案,因为我只是猜测。

Docker 镜像必须在各种发行版上运行,具有不同的存储后端(当您考虑镜像注册表时,可能会更多,例如hub.docker.com)。即使那些基于文件系统的文件系统也可能受到具有不同功能的不同文件系统的支持。

这意味着为了让 Docker 镜像在所有情况下都能可靠且可重复地运行,它们必须最大限度地减少它们保留的扩展文件系统功能的数量。

这可能就是为什么实现文件系统 ACL 所需的扩展属性没有保留为映像的一部分的原因。


它工作在一个容器因为此时文件存储在特定的本地文件系统上,因此您可以利用该文件系统支持的任何功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dockerfile 中的 setfacl 没有效果 的相关文章

  • docker asp.net core 容器在 mysql 容器之后启动

    我有一个带有 asp net core 的 docker 容器和一个带有 mysql 的容器 现在我需要等待 mysql 容器启动并准备好 两个容器都通过 docker compose yml 启动 就像是https github com
  • 创建一个能够从容器注册表中提取的 Docker 就绪计算引擎

    我们使用 terraform 设置 GCE 实例 然后使用 ansible playbooks 来配置它们并将我们的服务转移到机器上 我正在我们的组织中运行一个项目 该项目需要从另一个项目中提取 Docker 映像 这些图像托管在另一个项目
  • 如何在 kubernetes 中传递命令行参数?

    需要在 pod yaml 中传递 docker 容器 appContainer1 和 appContainer2 的命令行参数 pod yaml apiVersion v1 kind Pod metadata name microservi
  • 通过元层覆盖 Yocto 类

    感谢您的时间和支持 我计划使用 swupdate 进行更新 因此 我需要创建一个额外的分区来存储恢复分区 poky meta classes image live bbclass 是创建分区并刷新根文件系统的类 我已更新上述文件以再创建一个
  • Linux 上的 头文件在哪里?为什么我找不到 ? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在Linux中实现C的getch 函数 https stackoverflow com questions 3276546 how to implement getch function of c
  • 如何从 WSL2 上的 ubuntu shell 设置 JAVA_HOME?

    我在 Windows 10 家庭版上安装了 WSL2 我想使用 Maven 我验证它在 Windows 上安装正确 在 Windows 终端的 ubuntu shell 中 我在我的 profile但它不会被设置 我运行这些命令来尝试设置
  • 如何在AWS批处理中定义根卷大小

    我正在使用 AWS Batch 但发现根卷大小对于我的任务来说太小 我尝试创建一个新的计算环境 作业队列 但没有任何选项来设置卷大小 我尝试更改启动配置here https console aws amazon com ec2 autosc
  • 在 docker 容器内运行 vite 开发服务器

    我有一个 Vue cli 应用程序 我正在尝试将其转换为 vite 我正在使用 Docker 来运行服务器 我看了几个教程 并让 vite 在开发模式下运行 没有错误 但是 浏览器无法访问该端口 也就是说 当我在 macbook 的命令行上
  • Docker容器总是显示ssl连接错误

    我正在开始使用 docker compose 并一直在研究简单的演示 Flask 应用程序 问题是 我在一个组织内部运行这个程序 该组织以左右抛出 SSL 错误的方式拦截所有通信 他们为我们提供了需要安装的三个根证书 我通常已经让这些证书在
  • 在我的 Linux 机器上安装 lisp

    我使用 Vim 作为我的编辑器 Practical common Lisp 建议安装 Lispbox 我不知道如何使用 emacs 不知道如何用那个 T T 运行 lisp 代码 之后我找到了一个名为 limp vim 的 vim lisp
  • 如何让 Docker 容器访问主机上的 dnsmasq 本地 DNS 解析器?

    Docker 容器可能会通过多种方式对 DNS 设置感到困惑 只需在 SO 或更广泛的互联网上搜索 Docker DNS 即可了解我的意思 建议的常见解决方法之一是 将 dnsmasq 设置为主机系统上的本地 DNS 解析器 将其绑定到do
  • Docker 中的 Keycloak“无法将代码转换为令牌”

    我正在 Docker compose 网络中运行 Keycloak keycloak Security Proxy 和 ui 应用程序 当我尝试访问该网页时 我得到一个可以使用的登录页面 但我没有成功重定向 而是收到以下错误 gt Aug
  • 产生并处理软件中断

    有人可以告诉我如何在Linux下生成软件中断然后用request irq处理它吗 或者也许这是不可能的 您可以使用软中断来代替 您可以通过编辑 include linux interrupt h 来定义您的 sofirq 然后使用函数 ra
  • 通过 C 将线程固定到 cpuset 中的核心

    我有 cgroup cpuset set1 set1有2 5 8 我想将一个进程绑定到该 cpuset 然后将该进程中的一个线程固定到核心 4 cpuset 的名称 线程名称以及我应该将线程绑定到的核心位于 m 配置文件中 是否有任何 C
  • 是否可以在一台机器上使用 GitHub 和 GitLab?

    我的账户位于GitHub and GitLab 我生成了 RSA 密钥并将其添加到我的帐户中GitLab 但现在我需要与GitHub在第二个项目上 我知道GitLab和GitHub都使用git 请告诉我是否可以在一台机器上使用 GitHub
  • Docker容器CPU使用率监控

    根据 docker 的文档 我们可以通过以下方式获取 docker 容器的 CPU 使用率码头工人统计命令 CPU 列将给出容器正在使用的主机 CPU 的百分比 假设我限制容器使用 50 的主机单个 CPU 我可以通过 cpus 0 5 选
  • 将管道输入转储到文件的简单方法是什么? (Linux)

    我正在寻找一个小 shell 脚本 它可以将任何内容通过管道传输到其中 并将其转储到文件中 用于电子邮件调试目的 有任何想法吗 unix 命令 tee 可以做到这一点 man tee
  • OpenCV 在使用 anaconda 的 Linux 上无法与 python 正常工作。收到 cv2.imshow() 未实现的错误

    这就是我得到的确切错误 我的操作系统是 Ubuntu 16 10 OpenCV 错误 未指定错误 该功能未实现 使用 Windows GTK 2 x 或 Carbon 支持重新构建库 如果您使用的是 Ubuntu 或 Debian 请安装
  • 为什么我的 Linux 应用程序引入了错误的 .so 库?

    我正在构建一个使用 NetCDF C 库的应用程序 并且 NetCDF 正在引入 HDF 4 库 然而 它正在拉动wrongHDF 4 库 我的应用程序的链接方式如下 apps1 intel bin icpc gxx name apps1
  • 无法从 docker 容器打开 URL

    我在从 Docker 容器导航到 Google 身份验证页面时遇到问题 该应用程序是使用 asp net Core 2 0 制作的 其目的是显示从 Google Calendar API 检索的即将发生的事件 并在需要时创建事件 当应用程序

随机推荐

  • SQLAlchemy 通过父连接查询子表过滤器

    我是 SQL Alchemy 的新手 目前正在开发一个用于工作的性能工具 但在查询方面遇到了困难 我想要做的是查询一个子表 其中它的父表与特定的过滤器匹配 可能是我的桌子设置不正确 这不允许我做我想做的事 这是我的模型 class Test
  • 如何为具有超过 22 个字段的案例类编写隐式写入

    case class Foo 1 Int 2 Int 3 Int 4 Int 5 Int 21 Int 22 Int 23 Int 24 Int 25 Int 31 Int 32 Int 33 Int 34 Int 35 Int 41 In
  • 如何在 Orchard CMS 上使用 lucene 查询语法

    我想使用完整的Lucene 查询语法 http lucene apache org core 2 9 4 queryparsersyntax html在基于 Orchard CMS 的网站上 目前 启用后索引和搜索 http docs or
  • 架构中的 mongoose geojson,“无法提取地理密钥”错误

    我有一个具有已定义架构的 mongodb 集合 并且我更新了此架构以包括纬度 经度坐标 旧版本 var schema mongoose Schema id String name String address String city Str
  • 三个js如何手动添加三角形到BufferGeometry

    我一直在尝试找到使用 Three js 更改网格顶点的最快方法 我发现 如果我更改 mesh geometry attributes position array 的部分内容 然后设置 mesh geometry attributes po
  • scala 2.10中通过反射调用构造函数

    在 scala 2 10 M4 中调用类的构造函数的最佳实践是什么 回答我自己的问题 调用构造函数与调用方法不同 这是在 scala 2 10 中执行此操作的正确方法 import reflect runtime universe impo
  • 安卓。一起滚动 2 个列表视图

    好的 我想要实现的是一种与 Excel 中的冻结窗格具有相同效果的布局 也就是说 我想要一个与主 ListView 一起水平滚动的标题行 以及与主 ListView 一起垂直滚动的左侧 ListView 在另一个维度滚动时 标题行和左侧列表
  • Selenium:有没有可以与 Selenium Server/RC 集成的 JS (JavaScript) 代码覆盖工具

    Selenium 有没有可以与 Selenium Server RC 集成的 JS JavaScript 代码覆盖工具 Hi 我想通过我的 Selenium 测试套件完成 JS 代码覆盖率 是否有任何代码覆盖率工具可以与我现有的 selen
  • 带有 PHP 后端的日志套件?

    有人知道 PHP 应用程序的通用日志记录套件吗 我所说的 套件 是指一个轻量级的日志函数库以及成熟的后端来查看它们 后端必须是可配置的 并使用以下功能显示日志条目 按日期过滤 按事件过滤 警告 错误 自定义事件 按类别过滤 按用户过滤 按关
  • 安装 symfony-cmf-standard 时“执行缓存时发生错误:clear --no-warmup”

    我试图使用以下命令安装 symfony cmf standard composer phar create project symfony cmf standard edition symfony cmf standard stabilit
  • Int[].Contains 在 EF6 中不起作用

    我有一个奇怪的问题 基本上我有这个代码 var langauges from l in context languages where Model LanguageIDs Contains l LanguageID select l ToL
  • 显示 searchResults TableView 时隐藏 UITableView

    我有一个UITableView with a searchDisplayController实施的 我有 tableView backgroundColor UIColor clearColor and self searchDisplay
  • WordPress 网站迁移 - 图标丢失

    我最近按照以下步骤将本地站点迁移到临时服务器https codex wordpress org Moving WordPress https codex wordpress org Moving WordPress一切似乎都工作正常 最初
  • 延迟任务开始的正确方法

    我想安排一个任务在 x 毫秒内启动 并能够在它开始之前 或在任务开始时 取消它 第一次尝试是这样的 var cancelationTokenSource new CancellationTokenSource var token cance
  • 在日志中包含 Active Record 查询的作用

    Rails 现在支持多个数据库角色 默认情况下 https guides rubyonrails org active record multiple databases html using manual connection switc
  • powershell:如何从 [ref] 变量写入主机值

    我是 Powershell 新手 我正在尝试弄清楚如何从函数内打印 ref 变量的值 这是我的测试代码 function testref ref obj1 obj1 value obj1 value 5 write host the new
  • MongoDB 限制查找结果

    如何查询集合并限制返回的结果 假设我有一个包含 500M 文档的数据库 但我只想搜索并返回前 10 个匹配项 而不必搜索整个集合 出于性能原因 理想情况下 我可以在 O m n 时间内返回第 n 到 m 个结果 如果这可能或如何做到 有什么
  • ASP.Net Core 错误 JSON

    我正在玩一点 ASP NET Core 我正在创建一个基本的 webapi 我想在出现问题时显示 JSON 错误 打印屏幕在屏幕上显示我想要的内容 唯一的问题是发送时状态码为 200 catch NullReferenceException
  • 在 Visual Studio 调试器中查看命名空间全局变量?

    在 Visual Studio 2008 中调试非托管 C 项目时 我偶尔想查看全局变量的值 我们没有很多这些 但那些都在名为 全局 的名称空间中声明 例如 namespace global int foo bool bar 问题是 当代码
  • Dockerfile 中的 setfacl 没有效果

    我想在使用 setfacl 构建 docker 映像时为某些文件夹设置默认 acl 但它没有效果 默认 acl 不变 我的目标是在 opt 中创建的每个文件都必须对任何用户都具有 rwX 权限 因为该映像稍后将使用任意 uid 运行 并且需