我在使用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
然后,我构建包含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)
有任何想法吗?无法理解为什么不会像我用相同的路径托管卷时那样启动
最佳答案
Dockerfile中的ADD
行不会产生任何影响(该文件不会被复制),因为它在VOLUME指令后出现。如果改为更改它以使其显示在VOLUME指令之前,它将被复制到该卷中。
您无需保持数据容器运行。如果您只是运行退出例如的命令docker run --name data-con data-container-image echo "Data Container"
将创建卷并退出。这些卷仍然存在,可以在其他容器中使用--volumes-from data-con
进行访问。只是不要rm data-con容器。
而且,通常,您不需要运行容器和数据容器的单独Dockerfile-您也可以将grafana镜像用作数据容器。
简而言之:
docker run --name my_data nmcg/my_data echo "My Data Container
启动数据容器有关更多信息,您可以在这里查看我的博客文章:http://container-solutions.com/2014/12/understanding-volumes-docker/
关于elasticsearch - 用于Elasticsearch的仅数据容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27391038/