当前位置: 首页 > 面试题库 >

如何将新软件包安装到非根Docker容器中?

井洲
2023-03-14
问题内容

我正在尝试为SOLR扩展Docker容器。我只想安装vim到它。但是,当我运行docker build时,它抱怨我不是root。

这是我要扩展的DockerFile:https : //github.com/makuk66/docker-
solr/blob/master/5.3/Dockerfile

我的构建文件是这样的:

FROM makuk66/docker-solr
MAINTAINER OCSCommerce Team <support@ocscommerce.com>
RUN apt-get update
RUN apt-get --assume-yes install vim
COPY home/ocscommerce /etc/solr/home

然后输出:

192.168.99.100
localhost:solr$ docker build -t ocscommerce/solr .
Sending build context to Docker daemon 39.66 MB
Step 0 : FROM makuk66/docker-solr
 ---> 92be2fe79f15
Step 1 : MAINTAINER OCSCommerce Team <support@ocscommerce.com>
 ---> Using cache
 ---> a3ac70e40324
Step 2 : RUN apt-get update
 ---> Running in c865716a2694
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

有什么方法可以将软件包安装到此容器中?还是我需要从makuk66复制原始构建文件?


问题答案:

在Dockerfile#L24中,用户已切换到solr。因此,如果您使用将该图像用作基本图像FROMDockerfile则用户自己的所有命令都将由用户运行solr

您可以通过从头开始构建Dockerfile来修复它。

FROM    java:openjdk-8-jre
MAINTAINER  Martijn Koster "mak-docker@greenhills.co.uk"

ENV SOLR_VERSION 5.3.0
ENV SOLR solr-$SOLR_VERSION
ENV SOLR_USER solr

RUN export DEBIAN_FRONTEND=noninteractive && \
  apt-get update && \
  apt-get -y install lsof && \
  groupadd -r $SOLR_USER && \
  useradd -r -g $SOLR_USER $SOLR_USER && \
  mkdir -p /opt && \
  wget -nv --output-document=/opt/$SOLR.tgz http://www.us.apache.org/dist/lucene/solr/$SOLR_VERSION/$SOLR.tgz && \
  tar -C /opt --extract --file /opt/$SOLR.tgz && \
  rm /opt/$SOLR.tgz && \
  ln -s /opt/$SOLR /opt/solr && \
  mkdir -p /opt/solr/server/solr/lib && \
  chown -R $SOLR_USER:$SOLR_USER /opt/solr /opt/$SOLR

RUN apt-get --assume-yes install vim

EXPOSE 8983
WORKDIR /opt/solr
USER $SOLR_USER
CMD ["/bin/bash", "-c", "/opt/solr/bin/solr -f"]

其次,在构建时不要将代码复制到容器中,使用-v选项将更加灵活。

COPY home/ocscommerce /etc/solr/home

替换为docker run命令-v home/ocscommerce:/etc/solr/home



 类似资料:
  • 本文向大家介绍Docker 安装Debian / Ubuntu软件包,包括了Docker 安装Debian / Ubuntu软件包的使用技巧和注意事项,需要的朋友参考一下 示例 在单个运行命令上运行安装以合并更新和安装。如果以后添加更多软件包,它将再次运行更新并安装所有需要的软件包。如果更新是单独运行的,它将被缓存,并且软件包安装可能会失败。脚本安装需要将前端设置为非交互式,并传递-y来安装。在安

  • 我在python中的安装工具版本是28.8.0。pip版本是9.0.1。我不允许安装软件包,我收到以下错误消息: 使用缓存的numpy-1.12.1.zip收集numpy 命令的完整输出Python setup . py egg _ info:< br > trace back(最近一次调用last): File " ",第1行,文件" C:\ Users \ udari \ AppData \

  • 如何在高山容器中安装Docker并运行docker映像?我可以安装,但无法启动docker,并且在运行时获取“docker命令未找到错误”。

  • 我让jenkins在github上的容器和项目源代码中运行。 我需要在与jenkins相同的主机上运行容器中的项目,但不是作为docker中的docker,我希望将它们作为兄弟容器运行。 我的管道如下所示: 从github中提取源文件 我现在要做的是使用jenkins容器中主机的docker套接字: jenkins容器将源代码为/var/jenkins_home/workspace/BRANCH_

  • 什么是红帽订阅管理 红帽订阅订阅管理提供了向服务器/计算机授权产品订阅的工具,让管理员能够获取软件包的更新,跟踪系统所用支持合同和订阅的相关信息。PackageKit 和 yum 等标准工具可以用来获取红帽提供的软件包和更新等内容。可以通过红帽订阅管理工具执行下列四项基本任务: 注册 - 注册系统,将该系统与某一红帽帐户关联。这可以让订阅管理器唯一地清查该系统。不再使用某一系统时,可以取消注册。

  • 问题内容: 康达4.2.13 MacOSX 10.12.1 我正在尝试将软件包安装到使用anaconda创建的新环境(虚拟)中。 在Anaconda文档中,这说得很好。它的完成方法与virtualenv相同。 激活要放置程序的环境,然后pip安装程序… 我在Ananconda中创建了一个空环境,如下所示: 激活它: 然后,我可以在终端中看到我正在环境中工作。当我尝试使用安装软件包时,出现了问题: