SOLRのdockerコンテナーを拡張しようとしています。 vim
をインストールしたいだけです。しかし、Dockerビルドを実行すると、ルートではないという不満があります。
これは私が拡張している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
に切り替えられています。したがって、FROM
でベースイメージとしてイメージを使用する場合、独自のDockerfile
のすべてのコマンドはユーザー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
root
ユーザーに切り替えてから、元のsolr
ユーザーに切り替えます。
USER root
install/updates
USER solr
前の回答と同様の提案 https://stackoverflow.com/a/37615312/220069 、rootユーザーとして対話型シェルを開き、apt-getを使用してパッケージをインストールします。
docker exec --user="root" -it <container_name> /bin/bash
パッケージをインストールする
apt-get install package