Wie kann ich eine host-Verzeichnis mounten mit dem container-Verzeichnis Inhalt?
Was ich versuche zu tun ist eingerichtet, einen docker-container für die ghost-wo kann ich leicht ändern Sie das Thema und andere Inhalte. Also ich mache /opt/ghost/content ein Volumen und die Montage auf dem host.
Sieht es aus wie ich haben, um manuell kopieren Sie das theme in das host-Verzeichnis, denn wenn ich es mounten, es ist ein leeres Verzeichnis. Also mein content Verzeichnis ist gänzlich leer. Ich bin mir ziemlich sicher, ich mache etwas falsch.
Ich habe versucht ein paar verschiedene Varianten, darunter mit ADD mit Standard themes-Ordner, putting-VOLUMEN am Ende der Dockerfile. Ich halte am Ende mit einem empty Inhalts-Verzeichnis.
Hat jemand ein Dockerfile etwas ähnliches ist bereits in Arbeit, die ich mir ansehen kann?
Oder vielleicht kann ich die docker cp
Befehl irgendwie zu füllen den Volumen?
Ich kann etwas fehlen offensichtlich oder machte eine dumme Fehler in meine versuche, dies zu erreichen. Aber die grundlegende Sache ist, ich möchte in der Lage sein laden Sie eine neue Reihe von Dateien in das ghost-themes-Verzeichnis unter Verwendung einer host-montiert, die Lautstärke und auch die casper-Thema gibt es standardmäßig.
Dies ist, was ich in meinem Dockerfile jetzt:
FROM ubuntu:12.04
MAINTAINER Jason Livesay "[email protected]"
RUN apt-get install -y python-software-properties
RUN add-apt-repository ppa:chris-lea/node.js
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get -qq update
RUN apt-get install -y sudo curl unzip nodejs=0.10.20-1chl1~precise1
RUN curl -L https://en.ghost.org/zip/ghost-0.3.2.zip > /tmp/ghost.zip
RUN useradd ghost
RUN mkdir -p /opt/ghost
WORKDIR /opt/ghost
RUN unzip /tmp/ghost.zip
RUN npm install --production
# Volumes
RUN mkdir /data
ADD run /usr/local/bin/run
ADD config.js /opt/ghost/config.js
ADD content /opt/ghost/content/
RUN chown -R ghost:ghost /opt/ghost
ENV NODE_ENV production
ENV GHOST_URL http://my-ghost-blog.com
EXPOSE 2368
CMD ["/usr/local/bin/run"]
VOLUME ["/data", "/opt/ghost/content"]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit ich weiß, leeres host-montiert (gebunden) Bände noch nicht erhalten, der Inhalt der Verzeichnisse, die während der build, ABER die Daten-Container referenziert --Bände aus WIRD.
So, jetzt denke ich, die Antwort ist, eher als das schreiben von code zu umgehen, nicht initialisiert, host-volumes, vergessen, host-volumes, sondern stattdessen den Daten-Container.
Daten-Container verwenden das gleiche Bild wie die, die Sie versuchen, speichern von Daten für (Sie haben also die gleichen Verzeichnisse etc.).
docker run -d --name myapp_data mystuff/myapp echo Data container for myapp
Beachten Sie, dass es laufen wird, und dann verlassen, dass Ihre Daten-Container für Volumen werden nicht ausgeführt bleiben. Wenn Sie möchten, um Sie laufen, können Sie so etwas wie
sleep infinity
stattecho
, obwohl dies offensichtlich nehmen mehr Ressourcen und ist nicht erforderlich oder nützlich, es sei denn, Sie haben einige spezifische Grund-wie unter der Annahme, dass alle relevanten Container noch ausgeführt werden.Verwenden Sie dann
--volumes-from
zur Nutzung der Verzeichnisse aus dem Daten-container:docker run -d --name myapp --volumes-from myapp_data
https://docs.docker.com/userguide/dockervolumes/
müssen Sie den VOLUME-Richtlinie vor dem eigentlich Inhalt Hinzugefügt, um es.Meine Antwort ist völlig falsch! Schauen Sie hier es scheint, es ist tatsächlich ein bug. Wenn der VOLUME-Befehl passiert, wenn das Verzeichnis bereits vorhanden ist, in den container, die änderungen werden dann nicht gespeichert.
Dem Dockerfile sollte immer mit einem CMD oder ein ENTRYPOINT.
UPDATE
Wäre meine Lösung zum HINZUFÜGEN von Dateien in den container home-Verzeichnis, dann verwenden Sie ein shell-Skript als Einstieg in die werde ich kopieren Sie die Datei in den freigegebenen Datenträger, und all die anderen Aufgaben.
Habe ich in der gleichen Sache. Das problem begegnete ich war, dass ich über einen relativen lokalen mount-Pfad, so etwas wie:
Wechsel zu einem absoluten lokalen Pfad fest für mich:
Können Sie bestätigen, ob Sie die Taten ein relativer Pfad ist, und ob das hilft?
Andockfenster V1.8.1 erhält die Daten in einer Lautstärke, wenn Sie montieren Sie ihn mit dem Befehl ausführen. Von Andockfenster-docs:
Beispiel: Ein Bild definiert die
als Volumen und füllt es mit den Daten einer web-Anwendung. Ihre docker-hosts bietet einen mount-Verzeichnis
Starten Sie das Bild, indem Sie
dann bekommen Sie alle Daten aus /var/www/html in der hosts /my/host/dir
Diese Daten werden beibehalten, selbst wenn Sie löschen, der container oder das Bild.