Я думал, что понял документы, но, возможно, я этого не сделал. У меня создалось впечатление, что флаг -v /HOST/PATH:/CONTAINER/PATH
двунаправлен. Если у нас есть файл или каталоги в контейнере, они будут зеркалированы на хосте, давая нам способ сохранить каталоги и файлы даже после удаления контейнера докеров.Docker - Mount Directory от контейнера до хоста
В официальных версиях файлов докеров MySQL это работает. /var/lib/mysql
может быть привязан к хосту и пережить перезагрузку и замену контейнера при сохранении данных на хосте.
Я написал файл Docker для sphinxsearch-2.2.9 так же, как и на практике для изучения и понимания, вот оно:
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
Очень просто и легко получить вашу голову оборачивают вокруг в то время как обучение. Я присваиваю директории/etc &/var из сборки sphinx команде VOLUME, думая, что она позволит мне сделать что-то вроде -v ~/dev/sphinx/etc:/usr/local/sphinx/etc -v ~/dev/sphinx/var:/usr/local/sphinx/var
, но это не так, вместо этого она переписывает каталоги внутри контейнера и оставляет их пустыми. Когда я удаляю флаги -v и создаю контейнер, каталоги имеют ожидаемые файлы, и они не перезаписываются.
Это то, что я бегу, чтобы создать файл Docker после навигации в каталог, в котором он находится: docker build -t sphinxsearch .
И как только у меня есть, что создал, я следующий, чтобы создать контейнер на основе этого изображения: docker run -it --hostname some-sphinx --name some-sphinx --volume ~/dev/docker/some-sphinx/etc:/usr/local/sphinx/etc -d sphinxsearch
Я действительно был бы признателен за любую помощь и понимание того, как заставить это работать. Я посмотрел на образы MySQL и не вижу ничего волшебного, что они сделали, чтобы сделать каталог связным, они использовали VOLUME.
Заранее спасибо.
Вы понимаете, что в файле Docker «VOLUME/usr/local/sphinx/etc» не совпадает с запуском docker -v/usr/local/sphinx/etc:/usr/local/sphinx/etc »don Вы не согласны с тем, что предыдущий обходит многоуровневую файловую систему, а затем отображает ее на путь по вашему выбору на хосте. Часто оба используются вместе. – Matt
Да, я знал об этом. Я хотел получить доступ к каталогам из контейнера, поэтому что я могу иметь данные на хосте. Это был единственный способ, которым я мог подумать, как это сделать. Я опубликовал на форумах докеров и не получал никакой помощи или совета, это было результатом игры с ним и глядя на бесчисленные примеры. –