数据仅用于elasticsearch的容器

我有问题获取数据只有容器与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 

build立并运行它:

 docker build -t nmcg/my_data . docker run -i -t -name my_data nmcg/my_data 

然后,我build立了包含elasticsearch的grafana dockerfile

 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) 

有任何想法吗? 不能理解为什么不会启动,因为当我做主机卷相同的path工作

Dockerfile中的ADD行不会有任何影响(文件不会被复制),因为它在VOLUME指令后面出现。 如果您将其更改为 VOLUME指令之前出现,则会将其复制到卷中。

你不需要离开你的数据容器运行。 如果你只是运行一个命令,例如docker run --name data-con data-container-image echo "Data Container" ,它将创build卷并退出。 卷仍然存在,可以使用其他容器中的--volumes-from data-con访问--volumes-from data-con 。 只是不要rm的数据容器。

此外,一般来说,您不需要单独的Dockerfile来运行容器和数据容器,您也可以使用Grafana图像作为数据容器。

简而言之:

  • 将ADD行移到顶部
  • 删除CMD线
  • 使用docker run --name my_data nmcg/my_data echo "My Data Container启动数据容器 – 名称docker run --name my_data nmcg/my_data echo "My Data Container
  • 检查你的数据容器是否真的需要单独的Dockerfile

欲了解更多信息,你可以看看我的博客文章: http : //container-solutions.com/2014/12/understanding-volumes-docker/

我不清楚你什么时候运行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工人”方法。