在docker中运行logstash与-f标志的问题

我试图用下面的命令在红帽子7中运行logstash容器:

docker run -v /home/logstash/config:/conf -v /home/docker/logs:/logs logstash logstash -f /conf/logstash.conf --verbose 

收到的回应是:

 {:timestamp=>"2016-05-05T10:21:20.765000+0000", :message=>"translation missing: en.logstash.runner.configuration.file-not-found", :level=>:error} {:timestamp=>"2016-05-05T10:21:20.770000+0000", :message=>"starting agent", :level=>:info} 

并且logstash容器未运行。

如果我执行下面的命令:

 docker run -dit -v /home/logstash/config:/conf -v /home/docker/logs:/logs --name=logstash2 logstash logstash -e 'input { stdin { } } output { stdout { } }' 

使用以下命令在容器中input:

 docker exec -ti bash 

并执行:

 logstash -f /conf/logstash.conf 

一个新的logstash进程现在正在容器中运行,我可以pipe理configuration文件中设置的日志文件。

任何想法为什么我有这种奇怪的行为?

谢谢,所有。

问题解决了。 这是主机中的目录权限。感谢帮助@NOTtardy

尝试在logstash -f /conf/logstash.conf --verbose附近logstash -f /conf/logstash.conf --verbose双引号


编辑:刚试过你自己命令,它工作正常。 可能是你的logstash.conf是错误的原因。

我使用了一个非常简单的logstash.conf

 input { udp { port => 5000 type => syslog } } output { stdout { codec => rubydebug } } 

并得到了以下输出

 {:timestamp=>"2016-05-05T18:24:26.294000+0000", :message=>"starting agent", :level=>:info} {:timestamp=>"2016-05-05T18:24:26.332000+0000", :message=>"starting pipeline", :id=>"main", :level=>:info} {:timestamp=>"2016-05-05T18:24:26.370000+0000", :message=>"Starting UDP listener", :address=>"0.0.0.0:5000", :level=>:info} {:timestamp=>"2016-05-05T18:24:26.435000+0000", :message=>"Starting pipeline", :id=>"main", :pipeline_workers=>1, :batch_size=>125, :batch_delay=>5, :max_inflight=>125, :level=>:info} {:timestamp=>"2016-05-05T18:24:26.441000+0000", :message=>"Pipeline main started"}