2015-01-22 2 views
1

Я смущен о фиговых и докерных контейнерах.Понимание установленных каталогов с изображением и докером

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

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

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

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

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

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

Когда я подключаюсь к директории/данных моего контейнера для поиска elasticsearch ... это также пуст.

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

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

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

Я бегу Docker 1.4.1

+0

Это не похоже на вопрос программирования –

ответ

2

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

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

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

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

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


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

+0

Большое спасибо за объяснение. Можете ли вы объяснить, что вы подразумеваете под этим: «Если вы удаляете тома, контейнер сохраняет свои/данные, потому что эта папка определяется как тома Dockerfile контейнера». Когда я вхожу в контейнер, где находятся данные? – K2xL

+1

Это зависит от того, как вы «SSH» в контейнере - если вы запустите «fig run/bin/bash», вы выполняете (через рис) bash в другом контейнере, но с того же изображения. Не могли бы вы попробовать «docker exec folder_elasticsearch_1 -it/bin/bash» с запущенным контейнером и проверить, видят ли вы ожидаемые данные. – schmunk

+0

большое спасибо, что получил elasticsearch, глядя вправо. По-видимому, mariadb/mysql не так прост, так как кажется, что некоторые данные должны быть в каталоге/var/lib/mysql. вам повезло с этим? – K2xL

Смежные вопросы