Понимание установленных каталогов с помощью Fig и Docker

Я запутался насчет контейнеров с фигами и докером.

Я пытаюсь настроить Elastic Search и запустить его на своем бродячем ящике.

Таким образом, у меня есть фиг YML, который выглядит следующим образом:

elasticsearch:
  image: dockerfile/elasticsearch
  ports:
    - "9200:9200"
  expose:
    - "9200"
  volumes:
    - /docker_data/elasticsearch:/data

Я запускаю его, и упругий поиск работает нормально. Затем я скручиваю некоторые данные и вижу это.

Что касается раздела томов в fig yaml - я попытался смонтировать папку / data внутри контейнера asticsearch на docker_data, чтобы данные оставались неизменными.

Однако, что очень сбивает с толку, так это то, что когда я захожу на мой хост-бродячий компьютер и захожу в / docker_data /asticsearch... Он пуст?

Когда я перехожу в каталог / data моего контейнера asticsearch... он также пуст.

Странно то, что данные сохраняются - поэтому я изо всех сил пытаюсь выяснить, где данные на самом деле хранятся в контейнере докера, в соответствии с документацией, данные должны храниться там.

Я сталкиваюсь с той же самой проблемой при замене эластичного поиска на mysql. Когда я монтирую /var/lib/mysql, он появляется пустым как на контейнере, так и на хосте.

Самое странное, что в любом случае все останется неизменным, если я удалю часть томов. Так что теперь я запутался, как это происходит и почему мне все равно нужно монтировать том в любом случае.

Я работаю в докере 1.4.1

1 ответ

Решение

У меня были точно такие же проблемы с пониманием объемов.

То, что вы пытаетесь сделать, это монтировать том из вашего контейнера на хост, что невозможно (AFAIK, начиная с Docker 1.4.1).

Вы можете только смонтировать том со своего хоста в свой контейнер, что вы и делаете и почему он пуст, поскольку Docker создает для вас пустой каталог и монтирует это "поверх" существующих данных в контейнере.

Если контейнер будет писать в /data теперь он также будет отображаться на вашем хост-компьютере, но при этом будьте осторожны с разрешениями, особенно с Vagrant или boot2docker.

Если вы удалите тома, контейнер сохранит свои /dataпотому что эта папка определяется как том Dockerfile контейнера. Проверьте документацию для деталей о синтаксисе и постоянстве томов.


Аддон: То, что вы могли бы сделать, когда вам нужно что-то достать из контейнера, это монтировать /docker_data/elasticsearch:/data-to-copy а потом fig run elasticsearch cp -r /data /data-to-copy, Но я сомневаюсь, что это полезно для данных, хотя я делаю нечто подобное в проекте, но для исходного кода шаблона приложения.

Другие вопросы по тегам