Docker RUN groupadd && useradd 指令无效

2024-03-27

我已经使用 Dockerfile 构建了 Docker nginx“基本”映像,其片段如下:

FROM ubuntu:14.04
MAINTAINER Me <me.net>
RUN apt-get update && apt-get install -y supervisor
ADD supervisord.conf /etc/supervisor/conf.d/
RUN apt-get install -y nginx
..

然后将该映像与数据库容器和数据卷链接。后来,我想向容器添加一个用户,以便我可以作为该用户运行应用程序,因此我向 Dockerfile 添加了“RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33”指令,这样我的 Dockerfile 将如下所示:

FROM ubuntu:14.04
MAINTAINER Me <me.net>

RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33

RUN apt-get update && apt-get install -y supervisor
ADD supervisord.conf /etc/supervisor/conf.d/
RUN apt-get install -y nginx
..

然后我重新生成图像docker build -rm .,然后再次运行整个堆栈docker-compose up(我在 docker-compose.yml 中配置了堆栈)。

不幸的是,虽然RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33步骤没有出错,当我进入正在运行的nginx容器的shell时,luqo33用户或luqo33小组不在那里。然后我执行了相同的命令(groupadd -r luqo33 && useradd -r -g luqo33 luqo33)从 shell 中,组和用户已按预期添加。

为什么不呢RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33在 Dockerfile 中将用户和组添加到重建时的新容器中?我也尝试过docker build --no-cache .具有相同的效果(或缺乏效果)。我在这里缺少什么?


为了确保您的构建命令没有使用任何缓存层,请使用--no-cache https://docs.docker.com/reference/commandline/cli/#build option.

docker build --no-cache .

如果你想与 docker-compose 一样:

docker-compose build --no-cache

另外,由于您正在使用docker 撰写要启动容器,请确保运行docker-compose rm否则 docker-compose 将重用之前构建的镜像。

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

Docker RUN groupadd && useradd 指令无效 的相关文章

  • 将容器推送到 Azure 容器注册表时资源访问被拒绝

    使用 Docker Compose 将容器推送到私有 Azure 容器注册表时 Azure DevOps 管道返回以下错误 正在推送 容器 注册表 应用程序 最新 推送引用存储库 docker io registry container 被
  • 当我已经在Ubuntu上安装了nodejs 8时,还可以安装NVM吗?

    我已经安装了nodejs 8 我无法使用角度1运行karma测试 正如Karma官方网站上指定的那样Note Karma currently works on Node js 0 10 0 12 x 4 x 5 x 6 x and 7 x
  • 使用curl复制本地文件[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有办法用curl复制本地文件 我需要它作为cp命令的替代品 这有点奇怪 但我正在一个 cp 不可用的环境中工作 你可以说 curl o
  • 汇编语言中的全局_start是什么?

    这是我的汇编级代码 section text global start start mov eax 4 mov ebx 1 mov ecx mesg mov edx size int 0x80 exit mov eax 1 int 0x80
  • 无法打开 mysql-workbench

    我开始使用 mysql 但无法打开 mysql workbench 当我尝试通过 ubuntu 命令行打开它时 出现以下错误 usr lib mysql workbench mysql workbench bin 符号查找错误 usr li
  • 文件在 rpm 规范文件中列出两次

    我的规范文件的文件部分如下所示 files prefix htdocs config prefix htdocs share settings config inc php 现在 由于配置文件已经包含在 prefix htdocs 我收到警
  • 操作系统如何知道缺失页面的磁盘地址?

    分页充当虚拟地址空间和物理地址空间之间的间接层 给定一个地址 操作系统 OS 内存管理单元 MMU 将其转换为主内存位置 我的问题是 主内存中不存在该页面的情况 操作系统如何知道在磁盘上哪里可以找到该页面 它在哪里存储1的信息 它不存储在页
  • Rancher 外部子域

    我需要为 docker 容器中的应用程序设置子域 而不是在内部牧场主网络中 而是供公共使用 我已将域委托给牧场主服务器 并且目录中几乎所有堆栈都有主机属性 但它不起作用 我想我需要使用一些 rancher dns 委托域或设置 nginx
  • 专门逐行调试

    我有一个用 Pascal 编写的脚本 我会以这种方式调试它 在每一行停止 转储内存中所有变量的值 然后转到下一行 是否可以使用 gdb 或其他 Linux 开源工具来完成此操作 使用选项编译文件 g fpc gpc g file pas R
  • linux命令行:如何简单地将任意字符串输入管道?

    我正在寻找一个非常简单的技巧 假设文件中error txt 有一个很长的字符串 errorMessage key1 some message key2 message 2 由于它的格式不适合读者 如果我想在终端中以格式良好的形式查看它 我可
  • Kubernetes:无法创建存储库

    我正在跟进Kubernetes 入门指南 http kubernetes io docs hellonode 一切都很顺利 直到我跑步 gcloud docker push gcr io
  • 让子进程等待直到收到父进程的信号

    我想从父级创建 N 个子级 我希望所有的孩子同时开始 一个功能 测量时间 因此 我将该函数放入信号处理程序中 当父级完成创建 分叉 所有子级时 它会向所有子级发送信号 使用kill children id 以让 make 开始 代码如下 但
  • 可以从curl访问docker服务,但不能从postman/chrome访问docker服务

    我正在做 docker 入门指南 https docs docker com get started part3 recap and cheat sheet optional https docs docker com get starte
  • 如何使用 compose 将 docker 卷安装到我的 docker 项目中?

    我有一个 Maven 项目 我正在 Docker 内运行 Maven 构建 但问题是 每次运行它时 它都会下载所有 Maven 依赖项 并且不会缓存任何 Maven 下载 我找到了一些解决方法 将本地 m2 文件夹挂载到 Docker 容器
  • FLTK 1.4 小部件位置 w.r.t. X11 根窗口?

    context 我正在和其他人一起编码参考系统 http refpersys org C 17 上的 GPLv3 项目gitlab https gitlab com bstarynk refpersys适用于 GNU Linux x86 6
  • 如何格式化 .CSV 文件的日期字段并在字符串字段中包含多个逗号

    我有一个 CSV 文件 file csv 其数据全部用双引号引起来 文件的示例格式如下 column1 column2 column3 column4 column5 column6 column7 Column8 Column9 Colu
  • 在 docker build 中缓存“go get”

    我想将 golang 单元测试封装在 docker compose 脚本中 因为它依赖于多个外部服务 我的应用程序有很多依赖项 因此需要一段时间go get 如何以允许构建 docker 容器的方式缓存包 而无需每次要测试时下载所有依赖项
  • Docker 未知标志 --mount

    我想使用 mount 将目录从主机挂载到容器flag over volume但我得到 这仅在使用安装标志时才会出现 而不是在使用卷时出现 Command docker run d it name devtest mount type bin
  • 系统调用:sys_exit()、SYS_exit 和 exit() 之间的区别

    SYS exit sys exit 和 exit 之间有什么区别 我的理解是 Linux内核提供了系统调用 这些调用在man 2 syscalls 这些系统调用的包装函数由glibc它们的名称与系统调用大多相似 我的问题 在man 2 sy
  • 使用“容器ip”连接到docker容器

    我在 mac 上运行 docker 我想使用 docker 容器的 ip 不是虚拟机的 ip 连接到它 原因是 Spark 驱动程序将自身注册到容器 IP 172 17 0 2 并且从 mac 运行的客户端尝试连接到该地址 有没有办法从 m

随机推荐

  • 无法通过Java删除目录

    在我的应用程序中 我编写了从驱动器中删除目录的代码 但是当我检查文件的删除功能时 它不会删除该文件 我写过一些这样的东西 Code to delete the directory if it exists File directory ne
  • javaFX 表视图中的错误

    I make TableView在 javaFX 中包含两个TableColumns TableView Span 的宽度大于所有的宽度TableColumn 但这不是问题 我不明白的是 当我单击包含数据的行外部区域和列外部区域 红色区域
  • 在哪里可以找到已实施的耐心差异?

    这个网站上有很好的答案 Bram Cohen 的耐心 diff 在 bazaar 中作为默认 diff 和 git diff 的一个选项找到 但我发现很难找到一个独立的独立程序来实现这个特定的 diff 算法 例如 我想将 Patient
  • 根据列表中的值将列添加到数据框

    我有一个如下所示的数据框 df lt data frame A c a b c d e f g h i B c 1 1 1 2 2 2 3 3 3 C c 0 1 0 2 0 4 0 1 0 5 0 7 0 1 0 2 0 5 gt df
  • PHP 发送邮件表单到多个电子邮件地址

    我对 PHP 非常陌生 正在联系页面上使用基本模板 发送邮件 表单 当单击 提交 按钮时 要求我将电子邮件发送到多个电子邮件地址 我已经四处搜寻 但还没有找到我需要的东西 我需要在下面的表单中添加什么代码才能将其发送到多个电子邮件地址
  • Tensorflow.Keras:自定义约束不起作用

    我正在尝试实现权重正交约束所示here https towardsdatascience com build the right autoencoder tune and optimize using pca principles part
  • 创建具有命名子组件的组件?

    我需要了解使组件生成和管理子组件背后的基础知识 我最初通过创建一个来尝试这个TCollection 并尝试为每个人命名TCollectionItem 但我知道这并不像我希望的那么容易 所以现在我要再次从头开始这个项目 我想这次能做对 这些子
  • 在特定数量的分隔符后添加 '\n'

    我怎样才能添加一个 n每四次之后 CSV 文件中的分隔符 使用 bash 输入文件示例 aaaa bbbbbb cccc ddddd eeee ffff gggg hhhh iii jjjj kkkk llll 需要输出 aaaa bbbb
  • 为什么 auto 在 C++ 中的 2D 和 1D 数组的“range for”中工作方式不同

    您好 我正在 C 中处理 2D 和 1D 数组并使用范围为访问元素 我使用的代码如下 对于二维数组 int ia 3 4 1 2 3 4 5 6 7 8 9 for auto row ia for auto col row cout lt
  • 对于 range.formatconditions 中的每个 fc 都失败。为什么?

    以下代码适用于我的工作簿中的大多数工作表 Function IsHighlighted As Boolean Dim wks As Worksheet For Each wks In ThisWorkbook Worksheets Dim
  • 为什么这个随机数生成器会生成相同的数字?

    第一个有效 但第二个总是返回相同的值 为什么会发生这种情况以及我应该如何解决这个问题 int main std random device rd std mt19937 gen rd std uniform real distributio
  • 更改正在运行的进程的环境变量

    我有一个导出环境变量并启动一些下标的脚本 export LOGLEVEL 1 home myuser bin myscript1 sh home myuser bin myscript2 sh LOGLEVEL可用于从下标启动的进程 如何更
  • java: 不使用时绑定异常地址使用错误(如netstat所示)

    我的应用程序使用特定的源端口与服务器建立出站连接 考虑到防火墙问题 强化的系统可能需要提前指定端口 我的问题是我的应用程序最初建立连接 但是 如果连接中断 它将重试 但套接字将收到 BindException 指出 地址正在使用 事实并非如
  • Node.js 与 Redis:同步还是异步?

    在我的应用程序 node express redis 中 我使用一些代码同时更新数据库中的多个项目 app put myaction function req res delete stuff db del key1 db srem set
  • C# 在运行时获取定义字典的类型

    我想知道在运行时获取定义字典的通用参数的最佳方法是什么 举个例子 Dictionary
  • Flutter - ListView.builder 尺寸非常大并且不会改变

    如何使用ListView builder我已经尝试修补所有的东西ItemCategory但大小保持不变 使用 ListView 时 尺寸是最小的 如下图所示 使用Flutter 刷新后 ListView 的奇怪行为 https stacko
  • 在notifyDatasetChanged()后RecyclerView闪烁

    我有一个 RecyclerView 它从 API 加载一些数据 包括图像 url 和一些数据 我使用 networkImageView 来延迟加载图像 Override public void onResponse List
  • 为什么rxjs不取消我的承诺?

    我在用rxjs in my angular应用程序 当多个数据时 我并不总是按照我想要的顺序取回数据REST已拨打电话 控制器 constructor rx Observable fromPromise this getExpenses t
  • 如何在代码中添加实体框架6提供程序?

    我在 C 应用程序中使用 Entity Framework 6 它运行良好 创建模型时 会生成包含所有必要配置的 app config 现在我不喜欢在 app config 中添加内容 因此我使用连接字符串生成器 我成功地从 app con
  • Docker RUN groupadd && useradd 指令无效

    我已经使用 Dockerfile 构建了 Docker nginx 基本 映像 其片段如下 FROM ubuntu 14 04 MAINTAINER Me