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

理查德·G:

我正在尝试为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 <[email protected]>
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 <[email protected]>
 ---> 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 "[email protected]"

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将软件包安装到Docker的python?

将docker-compose.yml中的软件包安装到docker容器中

如何将软件包安装到“标准前缀”?

如何将软件包安装到TeXstudio?

如何将Python 3.7软件包安装到Docker?

如何在非 root 运行的容器中安装新软件包?

Docker容器在启动时将新软件包安装在requirements.txt中

如何在Docker Ubuntu容器中安装软件包?

如何将所有现有的全局NPM软件包安装到本地目录中?

如何将python软件包安装到Google Dataflow上并将其导入管道中?

如何将LaTeX软件包linguex安装到Ubuntu?

如何将nuget软件包文件安装到项目中的特定位置

如何将python软件包从旧版本安装到新版本?

如何将GGRAPH软件包安装到最新的R(v.3.3.2)

如何将软件包安装到Debian Linux操作系统?

如何将软件包安装到外部驱动器(并运行它们)?

我如何将debian软件包安装到mac-osx-mojave(10.14)

Mamba 将软件包安装到错误的环境中

如何获得点子以将软件包安装到虚拟环境中?

如何将Python软件包pip安装到虚拟环境中并在普通shell中可以访问CLI命令

无法在Docker容器中安装软件包

在Docker容器中安装Golang外部软件包

无法在Docker容器中安装任何python软件包

验证安装在Docker容器中的R软件包

如何使用PackageReferences将Microsoft.ReportingServices.ReportViewerControl.WebForms NuGet软件包安装到非SDK样式的项目中?

如何将Chocolatey软件包安装到另一个驱动器?

无法将Python软件包安装在Docker容器中

您如何以组织形式将私有npm软件包发布并安装到GitHub软件包中?

pip将新的Python软件包安装到所有现有的virtualenvs