Ich versuche, einen Docker-Container für SOLR zu erweitern. Ich möchte nur vim
darin installieren. Aber wenn ich den Docker-Build ausführen lasse, beschwert er sich, dass ich nicht root bin.
Dies ist die Docker-Datei, die ich erweitere: https://github.com/makuk66/docker-solr/blob/master/5.3/Dockerfile
Und meine Build-Datei lautet:
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
Dann gibt es das aus:
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?
Gibt es eine Möglichkeit, ein Paket in diesen Container zu installieren? Oder müsste ich die Original-Build-Datei von makuk66 kopieren?
In der Dockerfile # L24 wurde der Benutzer auf solr
umgestellt. Wenn Sie also das Bild als Basisbild mit FROM
verwenden, werden alle Befehle in Ihrer eigenen Dockerfile
vom Benutzer ausgeführt. solr
Sie können das Problem beheben, indem Sie die Dockerfile von Anfang an erstellen.
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"]
Zweitens: Kopieren Sie die Codes beim Erstellen nicht in den Container. Die -v
-Option wird flexibler.
COPY home/ocscommerce /etc/solr/home
Ersetzen durch docker run
Befehl -v home/ocscommerce:/etc/solr/home
Wechseln Sie zum Benutzer root
und wechseln Sie dann wieder zum ursprünglichen Benutzer solr
:
USER root
install/updates
USER solr
Ähnliche Empfehlung zur vorherigen Antwort https://stackoverflow.com/a/37615312/2200690 , öffnen Sie eine interaktive Shell als Root-Benutzer und installieren Sie dann Ihre Pakete mit apt-get.
docker exec --user="root" -it <container_name> /bin/bash
installieren Sie das Paket
apt-get install package