2017-08-28 35 views
0

最新のバージョンのgrafanaをコンテナ化していて、コンテナの起動時にgrafana-processを起動してから、K8S(kubernetes)クラスタで使用したいと考えています。Docker - 起動時にプロセスが起動しない

マイDockerfileは、次のようになります。Dockerfileを構築

FROM armdocker/baseimages/rhel:7-20161207 
MAINTAINER xxxxxxxx 

ENV GRAFANA_VERSION_MAJOR=4 GRAFANA_VERSION_MINOR=4 GRAFANA_VERSION_PATCH=3-1 
ENV GRAFANA_VERSION=${GRAFANA_VERSION_MAJOR}.${GRAFANA_VERSION_MINOR}.${GRAFANA_VERSION_PATCH} 

RUN yum clean all && yum install -y unzip tar 

RUN curl -f -L -o grafana-${GRAFANA_VERSION}.x86_64.rpm https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-${GRAFANA_VERSION}.x86_64.rpm && \ 
    yum localinstall grafana-${GRAFANA_VERSION}.x86_64.rpm -y 

EXPOSE 3000 
ENTRYPOINT ["/etc/init.d/grafana-server start"] 

は成功し、エラーを返しません。

このイメージを実行しようとすると、エラーが発生します。

docker run -dit -p 3000:3000 armdocker/proj/grafana:1.0.5 
471b2acb964caad69bbb78831a59ee9d2b27997911b5b104b0057ddc957d1101 
Error response from daemon: Cannot start container 471b2acb964caad69bbb78831a59ee9d2b27997911b5b104b0057ddc957d1101: [8] System error: exec: "/etc/init.d/grafana-server start": stat /etc/init.d/grafana-server start: no such file or directory 

私はその後、

CMD ["/etc/init.d/grafana-server start"] 
を試してみました、私の ENTRYPOINT

として、私は(ファイル/etc/init.d/grafana-serverを作成する)最初のRPMをインストールしていますし、私は、プロセスを開始しようとしていますので、これは非常に奇妙であると思われます

また、これは私が、その後を使用してみました同じERROR /etc/init.d/grafana-server start: no such file or directory

になり10コマンド:

docker run -dit -p 3000:3000 armdocker/proj/grafana:1.0.6 
bfd492c75a0f4c284fc0fdbd5a590f0155f6f67bcb4834e144f344bb789546f3 
Error response from daemon: Cannot start container bfd492c75a0f4c284fc0fdbd5a590f0155f6f67bcb4834e144f344bb789546f3: [8] System error: exec: "/bin/systemctl start grafana-server.service": stat /bin/systemctl start grafana-server.service: no such file or directory 

私は私が始めたgrafanaプロセスでコンテナを持つことが間違ってやっているものにとアイデアをしています。

+0

'ENTRYPOINT [" /etc/init.d/grafana-server "]' 'CMD [" start "]' – johnharris85

答えて

2

コンテナ内で独自のsystemdデーモンを実行している場合を除き(これはお勧めできませんが、多くの問題が発生します)、systemctlまたは/etc/init.dコマンドでプロセスを開始しようとしないでください。コンテナはVMではなく、独自の名前空間内でアプリケーションを実行するメソッドです。そのアプリケーションが終了すると、コンテナも終了します。アプリケーションがsystemctl startコマンドのようなものである場合、systemctlコマンドが返す瞬間にコンテナが終了します。これは、実行していたgrafanaプロセスの実行中もホッとしていて便利ではありません。

ホイールを再開発するのではなく、grafana自身がドッカーコンテナをどのようにパッケージ化するかを見てみることをお勧めします。具体的に彼らのrun.shはで終わる:

exec gosu grafana /usr/sbin/grafana-server  \ 
    --homepath=/usr/share/grafana     \ 
    --config=/etc/grafana/grafana.ini    \ 
    cfg:default.log.mode="console"    \ 
    cfg:default.paths.data="$GF_PATHS_DATA"  \ 
    cfg:default.paths.logs="$GF_PATHS_LOGS"  \ 
    cfg:default.paths.plugins="$GF_PATHS_PLUGINS" \ 
    "[email protected]" 

彼らのレポは、あなたがdocker-systemctl-replacement scriptを使用して、画像の主CMDとして、それを登録することができ、代替としてhttps://github.com/grafana/grafana-docker

1

で終わりました。 * .serviceスクリプトをチェックして、(systemdデーモンの助けを借りずに)サービスの起動と停止の方法を知ります。 Grafanaの人がスタートアップのシナリオを変更すると、ビルドは引き続き機能します。 ;)

関連する問題