Logstash в Docker - файл конфигурации не найден при подключении через том
РЕДАКТИРОВАТЬ: Кажется, что это вещь boot2docker... прекрасно работает в Ubuntu VM работает Docker.
Я пытаюсь запустить logstash в контейнере Docker, но когда я монтирую файл конфигурации как том, он, похоже, не находит его. Интересно, что если я запускаю контейнер с bash, я вижу там файл конфигурации и запускаю ту же команду, что и docker, это работает.
Docker File
FROM ubuntu:14.04
MAINTAINER cvallance
RUN apt-get update
RUN apt-get -yqq install openjdk-7-jre
RUN apt-get -yqq install curl
RUN mkdir /opt/logstash \
&& cd /opt/logstash \
&& curl -O https://download.elastic.co/logstash/logstash/logstash-1.4.2.tar.gz \
&& tar zxvf logstash-1.4.2.tar.gz
CMD ["/opt/logstash/logstash-1.4.2/bin/logstash", "agent", "--verbose", "-f", "/etc/logstash/sample.conf"]
Файл конфигурации находится по адресу$(pwd)/config/sample.conf
input {
stdin { }
}
output {
stdout {
codec => rubydebug
}
}
Команда сборки Docker:
docker build -t cvallance/logstash .
Команда запуска Docker:
docker run -ti -v $(pwd)/config:/etc/logstash cvallance/logstash
Ошибка:
Error: No config files found: /etc/logstash/sample.conf
Can you make sure this path is a logstash config file?
НО, если я запускаю ту же команду внутри контейнера из сеанса bash, вот так...
docker run -ti -v $(pwd)/config:/etc/logstash cvallance/logstash bash
...
root@d3fd885903dd:/# /opt/logstash/logstash-1.4.2/bin/logstash agent --verbose -f /etc/logstash/sample.conf
Все работает как положено. Т.е. ввод и вывод
testing
{
"message" => "testing",
"@version" => "1",
"@timestamp" => "2015-04-10T00:06:33.878Z",
"host" => "d3fd885903dd"
}
1 ответ
Если это "boot2docker", помните, что он предлагает вам хост Linux на базе ядра Tiny, без какой-либо настойчивости (кроме /var/lib/docker
).
Что я делаю, так это убедитесь, что Oracle_VM_VirtualBox_Extension_Pack установлен, и получите мой /c/Users/<yourLogin>
автоматически разделяется в моем сеансе boot2docker ssh.
Все, что мне нужно сохранить, написано там (/c/Users/<yourLogin>/...
), а не где-либо еще.
Если вам необходимо смонтировать каталог хоста как том данных, вы должны смонтировать папку из /c/Users/<yourLogin>/...
,
Другим вариантом (который сохраняется) является определение контейнера тома данных, который будет сохранять данные в /var/lib/docker/volumes/conf.json
и (для актуальных файлов) в /var/lib/docker/vfs/xxx
,
Это предпочтительный метод, поскольку он не связывает ваш контейнер данных с конкретной платформой хоста (здесь/c/Users/<yourLogin>
на самом деле зависит от хоста VM, от Windows! Не очень портативный.)