Mount-Verzeichnis im Container und teilen mit Host

Ich dachte, ich Verstand die docs, aber ich vielleicht nicht. Ich hatte den Eindruck, dass die -v /HOST/PATH:/CONTAINER/PATH Kennzeichen ist bi-direktional. Wenn wir Datei oder Verzeichnisse in die container, Sie wäre gespiegelt auf dem host-geben uns die Möglichkeit, die Verzeichnise und Dateien auch nach der deinstallation ein docker-container.

In der offiziellen MySQL-docker-images, das funktioniert. Die /var/lib/mysql gebunden werden können, um die host-und überleben neu gestartet und Ersatz der container unter Beibehaltung der Daten auf dem host.

Schrieb ich einen docker-Datei für sphinxsearch-2.2.9 nur als eine Praxis und zum Wohle von lernen und verstehen, hier ist es:

FROM debian

ENV SPHINX_VERSION=2.2.9-release

RUN apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -yqq\
    build-essential\
    wget\
    curl\
    mysql-client\
    libmysql++-dev\
    libmysqlclient15-dev\
    checkinstall

RUN wget http://sphinxsearch.com/files/sphinx-${SPHINX_VERSION}.tar.gz && tar xzvf sphinx-${SPHINX_VERSION}.tar.gz && rm sphinx-${SPHINX_VERSION}.tar.gz

RUN cd sphinx-${SPHINX_VERSION} && ./configure --prefix=/usr/local/sphinx

EXPOSE 9306 9312

RUN cd sphinx-${SPHINX_VERSION} && make

RUN cd sphinx-${SPHINX_VERSION} && make install

RUN rm -rf sphinx-${SPHINX_VERSION}

VOLUME /usr/local/sphinx/etc
VOLUME /usr/local/sphinx/var

Sehr einfach und leicht um Ihren Kopf gewickelt, während Sie lernen. Ich bin die Zuordnung der /etc & /var Verzeichnisse von der sphinx zu bauen, um die VOLUME-Befehl zu denken, dass es mir erlauben wird, etwas zu tun, wie -v ~/dev/sphinx/etc:/usr/local/sphinx/etc -v ~/dev/sphinx/var:/usr/local/sphinx/var, aber es ist nicht, stattdessen ist es ein überschreiben der Verzeichnisse in den container und lässt Sie leer. Wenn ich entfernen Sie die -v-Optionen und erstellen Sie den container, die Verzeichnisse zu den erwarteten Dateien und Sie werden nicht überschrieben.

Dies ist, was ich führen Sie zum erstellen der docker-Datei navigieren Sie zu dem Verzeichnis, das es in: docker build -t sphinxsearch .

Und sobald ich das habe, erstellte ich Folgendes tun, um einen container erstellen, basierend auf, dass Bild: docker run -it --hostname some-sphinx --name some-sphinx --volume ~/dev/docker/some-sphinx/etc:/usr/local/sphinx/etc -d sphinxsearch

Ich würde wirklich zu schätzen jede Hilfe und Einsicht, wie diese zu arbeiten. Ich schaute auf die MySQL-Bilder und sehe nichts Magisches, das Sie haben, um das Verzeichnis gebunden werden, Sie verwendeten LAUTSTÄRKE.

Vielen Dank im Voraus.

  • Sie erkennen, dass im Dockerfile", BAND /usr/local/sphinx/etc." ist nicht das gleiche wie docker run-v /usr/local/sphinx/etc:/usr/local/sphinx/etc." nicht wahr? Der ehemalige umgeht die layered filesystem, die später ordnet Sie in einen Pfad Ihrer Wahl auf dem host. Oft werden beide zusammen verwendet werden.
  • Ja, ich war sich dessen bewusst. Ich wollte den Zugriff auf die Verzeichnisse aus dem container, so kann ich die Daten auf dem host. Das war die einzige Möglichkeit, die ich denken konnte, wie es zu tun. Ich gebucht auf der docker-Foren und bekam keine Hilfe oder Beratung, dies war das Ergebnis von spielen, um mit ihm und suchen bei unzähligen Beispiele.
InformationsquelleAutor Hatem Jaber | 2015-07-30
Schreibe einen Kommentar