Logstash en Docker: el file de configuration no se encuentra cuando está montado a través de un volumen

EDITAR: Parece ser una cosa boot2docker … funciona bien en una window acoplable ubuntu vm.

Estoy tratando de iniciar logstash en un contenedor Docker, pero cuando instalo el file de configuration como un volumen, parece que no lo encuentra. Curiosamente, si inicio el contenedor con bash, puedo ver el file de configuration y ejecutar el mismo command que el que hace Docker, funciona.

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"] 

Archivo de configuration ubicado en $(pwd)/config/sample.conf

 input { stdin { } } output { stdout { codec => rubydebug } } 

Docker build command:

 docker build -t cvallance/logstash . 

Docker ejecutar command:

 docker run -ti -v $(pwd)/config:/etc/logstash cvallance/logstash 

Error:

 Error: No config files found: /etc/logstash/sample.conf Can you make sure this path is a logstash config file? 

PERO si ejecuto el mismo command dentro del contenedor de una session de bash como …

 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 

Todo funciona como se espera Es decir, input y salida

 testing { "message" => "testing", "@version" => "1", "@timestamp" => "2015-04-10T00:06:33.878Z", "host" => "d3fd885903dd" } 

Si se trata de un "boot2docker", recuerde que le ofrece un host Linux basado en Tiny core, sin ninguna persistencia (excepto /var/lib/docker ).

Lo que hago es asegurarme de que Oracle_VM_VirtualBox_Extension_Pack esté instalado y que mi /c/Users/<yourLogin> se comparta automáticamente en mi session boot2docker ssh.
Todo lo que necesito save está escrito allí ( /c/Users/<yourLogin>/... ), no en ningún otro lado.
Si tiene que montar un directory de host como volumen de datos, debe montar una carpeta desde /c/Users/<yourLogin>/...

La otra opción (que persiste) es definir un contenedor de volúmenes de datos , que persistirá en los datos en /var/lib/docker/volumes/conf.json y (para los files reales) en /var/lib/docker/vfs/xxx .
Esa es la mejor práctica preferida ya que no vincula su contenedor de datos a una plataforma de host específica (¡aquí ' /c/Users/<yourLogin> realidad depende del host de VM , en Windows! No es muy portátil).