elasticsearch 仅用于elasticsearch的数据容器,elasticsearch,docker,elasticsearch,Docker" /> elasticsearch 仅用于elasticsearch的数据容器,elasticsearch,docker,elasticsearch,Docker" />

elasticsearch 仅用于elasticsearch的数据容器

elasticsearch 仅用于elasticsearch的数据容器,elasticsearch,docker,elasticsearch,Docker,我在使用elasticsearch获取仅数据容器时遇到问题。 我可以让它在卷是主机卷的情况下工作,但不能用于仅数据容器。 这是我的数据专用容器: # Dockerfile FROM busybox VOLUME /src/elasticsearch/data VOLUME /src/elasticsearch/log VOLUME /src/elasticsearch/plugins VOLUME /src/elasticsearch/config ADD ./elasticsearch.ym

我在使用elasticsearch获取仅数据容器时遇到问题。 我可以让它在卷是主机卷的情况下工作,但不能用于仅数据容器。 这是我的数据专用容器:

# Dockerfile
FROM busybox
VOLUME /src/elasticsearch/data
VOLUME /src/elasticsearch/log
VOLUME /src/elasticsearch/plugins
VOLUME /src/elasticsearch/config

ADD ./elasticsearch.yml /src/elasticsearch/config/elasticsearch.yml
CMD /bin/sh
构建并运行它:

docker build -t nmcg/my_data .
docker run -i -t -name my_data nmcg/my_data
然后我构建我的grafana dockerfile,其中包括elasticsearch

docker build -t nmcg/grafana:5.0 .
docker run -d -p 80:80 -p 8000:8000 -p 9200:9200 -p 8125:8125/udp -p 8126:8126 --volumes-from metrics_data1 nmcg/grafana:5.0
并在运行elasticsearch时指向elasticsearch.yml文件:

exec start-stop-daemon --start --user "elasticsearch" -c "elasticsearch" --exec /elasticsearch/bin/elasticsearch --"-Des.default.config=/src/elasticsearch/config/e.yml
但是elasticsearch无法启动:

2014-12-09 23:32:59,668 INFO success: elasticsearch entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2014-12-09 23:32:59,927 INFO exited: elasticsearch (exit status 3; not expected)

有什么想法吗?无法理解为什么我不会像主机卷那样启动,因为主机卷的路径与它的工作路径相同

我不清楚您何时运行
exec start stop daemon--st..

但你应该试着做:

docker run -d \
    -p 80:80 -p 8000:8000 -p 9200:9200 -p 8125:8125/udp -p 8126:8126 \
    --volumes-from metrics_data1 nmcg/grafana:5.0 \
    /elasticsearch/bin/elasticsearch -Des.default.config=/src/elasticsearch/config/e.yml

这看起来更像是常规的“docker”方法。

docker文件中的
添加
行不会产生任何效果(文件不会被复制),因为它出现在卷指令之后。如果改为将其显示在卷指令之前,则会将其复制到卷中

您不需要让数据容器继续运行。如果您只是运行一个退出的命令,例如,
docker run--name data con data container image echo“data container”
它将创建卷并退出。这些卷仍然存在,可以使用其他容器中的
--volumes from data con
访问。只是不必管理数据容器

另外,一般来说,运行容器和数据容器不需要单独的Dockerfile—您也可以使用grafana映像作为数据容器

简言之:

  • 将添加行移到顶部
  • 删除CMD行
  • 使用docker run启动数据容器--将my_data命名为nmcg/my_data echo“my data container
  • 检查您的数据容器是否确实需要单独的Dockerfile
有关更多信息,您可以在此处查看我的博客帖子: