加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – Docker中的Logstash – 通过卷挂载时找不到配置文件

发布时间:2020-12-15 18:58:40 所属栏目:安全 来源:网络整理
导读:编辑:它似乎是一个boot2docker的东西……在运行docker的ubuntu vm中工作正常. 我正在尝试在Docker容器中启动logstash但是当我将配置文件作为卷挂载时,它似乎找不到它.有趣的是,如果我用bash启动容器,我可以在那里看到配置文件并运行与docker相同的命令,它可
编辑:它似乎是一个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
...
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"
}
如果它是“boot2docker”的东西,请记住,它提供了一个基于Tiny core,without any persistence的Linux主机(除了/ var / lib / docker).

我所做的是确保安装了Oracle_VM_VirtualBox_Extension_Pack,并获取我的/ c / Users /< yourLogin>在我的boot2docker ssh会话中自动共享.
无论我需要保留什么都写在那里(/ c / Users /< yourLogin> / …),而不是其他地方.
如果必须将主机目录作为数据卷安装,则应从/ c / Users /< yourLogin> / ….安装文件夹.

另一个选项(确实存在)是定义一个Data Volume Container,它将持久保存/var/lib/docker/volumes/conf.json中的数据,以及(对于实际文件)/ var / lib / docker / vfs / xxx中的数据.这是首选的最佳做法,因为它不会将您的数据容器链接到特定的主机平台(此处’/ c / Users /< yourLogin>实际上取决于VM主机,在Windows上!不是非常便携.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读