如何在启动时在docker集装箱启动服务

我正在尝试使用以下docker文件为OpenTSDB设置docker镜像

FROM centos:6.7 MAINTAINER http://www.centos.org RUN yum -y update && yum clean all RUN yum -y install httpd && yum clean all RUN yum -y install java-1.7.0-openjdk RUN yum -y install gnuplot RUN yum install -y https://github.com/OpenTSDB/opentsdb/releases/download/v2.2.0/opentsdb-2.2.0.noarch.rpm RUN sed -i '/^#tsd.storage.hbase.zk_basedir*/c\tsd.storage.hbase.zk_basedir = \/hbase-unsecure' /etc/opentsdb/opentsdb.conf RUN sed -i '/^#tsd.storage.hbase.zk_quorum*/c\tsd.storage.hbase.zk_quorum = 10.8.18.14:2181,10.8.18.15:2181,10.8.18.17:2181' /etc/opentsdb/opentsdb.conf RUN echo 'tsd.storage.fix_duplicates = true' >> /etc/opentsdb/opentsdb.conf RUN echo 'tsd.http.request.cors_domains = *' >> /etc/opentsdb/opentsdb.conf EXPOSE 4242 CMD service opentsdb start && tail -F /var/log/opentsdb/opentsdb.log 

最后一个CMD是作为一个服务启动opentsdb,但它不起作用。

不知道我在这里错过了什么,有人可以帮助吗?

您应该在前台启动docker进程,不要依赖init,upstart或其他OS服务控制器来运行您的命令。 我不熟悉opentsdb,但看起来他们有以下几点在前台开始他们的过程:

 CMD tsdb tsd