2015-01-07 8 views
6

nginxコンテナで消費される静的なHTMLファイルを含むデータ専用コンテナを作成しました。目標は、Webアプリケーションがnginxが使用できるボリュームを提供していることです。私はシンプルなDockerfileを作成した。このためデータコンテナを最初から実行しているドッカー

FROM scratch 
MAINTAINER me <[email protected]> 
ADD dist/ /webappp/ 

私は、コマンドラインから作成されたコンテナrun -d -v /webappp --name webapp myOrg/webapp echo yo

を実行すると、私は画像が何のコマンドを持っていないので、当然の正しい場合、エラーError response from daemon: Cannot start container db7fd5cd40d76311f8776b1710b4fe6d66284fe75253a806e281cd8ae5169637: exec: "echo": executable file not found in $PATHを取得すべてで実行することができます。コマンドなしでコンテナを実行することはできません。

データコンテナがまだ作成されていて、nginxでアクセスできるようになったため、コマンドラインでこのエラーが発生するのは大きな問題ではありませんが、Vagrantで自動化したい場合は不要です。このエラーのため、自動プロセスは常に失敗します。

私の唯一の解決策は、IMHOがエコーまたは真を呼び出すためにデータ専用のコンテナに意味をなさないディストリビューションから私の小さな便利なイメージを拡張することです。

ドッカーにNOP execコマンドがあるか、ドッカーが何かを実行する必要がある場合は、何もしない、またはエラーを発生させないスクラッチコンテナを実行できますか?

+0

このヘルプがありますが、http://stackoverflow.com/questions/25845785/most-appropriate-container-for-a-data-only-containerを試してもわかりませんか? ところで、私は私のデータコンテナのためにビジーボックスを使用することになった。 –

答えて

7

ドッカーマニュアルで述べたように:コンテナが実行されている必要はありません。また、コンテナがまったく動くべきであるとは言いません。

したがって、データ専用コンテナを実行してstupidをエコーする代わりに、 docker run -v /webappp --name webapp myOrg/webapp echo yo

すでにを作成するだけで、というコンテナが作成され、実行/開始されることはありません。自己へ

docker create -v /webappp --name webapp myOrg/webapp

注:ベイグラントをプロビジョニングするときにドッキングウィンドウが作成をサポートしていません!

+0

偉大な答え!ドッカー1.5.0では、 'docker create'が動くようにコマンドを追加しなければならなかったことに注意してください。もちろん、コンテナは決して実行されないので、コマンドは存在する必要はありません。 – rollingBalls

3

なぜスクラッチを使用していますか?

nginxイメージをベースとして使用してください。すでにイメージがキャッシュされているので、それ以上スペースを取らず、エコーを呼び出すことができます。

データコンテナのためのいくつかの参照:

+0

あなたはサイズについて正しいです!しかし、私はオーバーヘッド(比喩的に言えば)を望んでいません。ある日、誰かがデータのコンテナを開始するかもしれません。なぜなら、 "Hey"と思うように誘惑されるかもしれないからです。それは動作しますが、確かにあなたがしたいnginxの設定ではありません。誰もいなくて、イメージからのデータの更新だけでなく、動作しているnginxの設定と同期してデータを更新することに注意します。だから私にとっては、これはちょうどbusyboxや他のミニディストリビューションを使うのと同様の回避策の回避策です。 – Vadimo

+0

私はあなたが 'docker start'でechoコマンドを無効にすることはできないと思っています。ちなみに、これは、docker psに表示され検査されるので、echoコマンドの内部にコンテナの説明を入れるのに適しています。 –