无法在基于 apache/zeppelin:0.9.0 的 Docker 映像中安装软件包

Posted

技术标签:

【中文标题】无法在基于 apache/zeppelin:0.9.0 的 Docker 映像中安装软件包【英文标题】:Cannot install packages inside Docker image based of apache/zeppelin:0.9.0 【发布时间】:2021-09-05 08:44:10 【问题描述】:

我从 apache/zeppelin:0.9.0 基础镜像创建了一个 Dockerfile,该基础镜像在我的 docker 镜像中安装了 jq

FROM apache/zeppelin:0.9.0

RUN apt-get update && apt-get install -y jq

当我使用 docker build . 构建此映像时,我收到以下错误消息:

[2/2] 运行 apt-get update && apt-get install -y jq:

#5 0.257 读取包列表...

#5 0.272 E: 无法打开锁定文件 /var/lib/apt/lists/lock - open (13: Permission denied)

#5 0.272 E: 无法锁定目录 /var/lib/apt/lists/

在我的 Dockerfile 中使用 RUN sudo apt-get update && sudo apt-get install -y jq 时,我遇到另一个错误,说缺少 sudo:

[2/2] 运行 sudo apt-get update && sudo apt-get install -y jq:

#5 0.249 /bin/sh: 1: sudo: 未找到

我的问题是,在使用上述 Docker 基础镜像时,如何运行apt-get

【问题讨论】:

【参考方案1】:

如果您查看 zeppelin Dockerfile here,您可以看到在末尾附近有一个 USER 1000 语句。

当您尝试在此映像上构建时,您的构建步骤将作为不允许安装任何东西的用户运行。

要修复它,您需要在安装前切换到 root 用户,然后在完成后切换回用户 1000。像这样

FROM apache/zeppelin:0.9.0
USER root
RUN apt-get update && apt-get install -y jq
USER 1000

【讨论】:

以上是关于无法在基于 apache/zeppelin:0.9.0 的 Docker 映像中安装软件包的主要内容,如果未能解决你的问题,请参考以下文章

无法基于安全性隐藏链接

无法在 gcc 中执行基于配置文件的优化 (PBO)

基于位置的应用程序无法在后台 iPhone 中运行

无法在 Spark SQL 中基于 TimeUUID 进行查询

MySQL在本机无法基于localhost访问的问题解决

无法在基于 Alpine 的 Docker 容器中运行 Play 框架应用程序