编辑: 这似乎是boot2docker的事情…在运行docker的ubuntu vm中工作正常。
我正在尝试在Docker容器中启动logstash,但是当我将配置文件作为卷挂载时,似乎找不到它。有趣的是,如果我使用bash启动容器,则可以在其中看到配置文件并运行与docker相同的命令,它可以工作。
Docker文件
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
...
[email protected]:/# /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"
}