无法在基于 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 映像中安装软件包的主要内容,如果未能解决你的问题,请参考以下文章