2017-07-03 1 views
3

私はドッカー作成サービスを使用してコンテナを起動しようとしていますが、残念ながらコンテナはコード0から出ました。 コンテナは、.tar.gzアーカイブからのリポジトリのおかげで構築されています。このアーカイブはCentos VMです。はコード0で終了しました

同じアーカイブから6つのコンテナを作成したいと思います。 6回ドッカーコマンドを入力するのではなく、コマンドとタグを要約できるdocker-compose.ymlファイルを作成したいと思います。

私はdocker-compose.ymlファイルを1つのコンテナを作成するために書き始めました。ここで

は私のドッキングウィンドウ-compose.ymlです:私は1つだけ指定する必要がありますよう

version: '2' 
services: 
    dvpt: 
    image: compose:test.1 
    container_name: cubop1 
    command: mkdir /root/essai/ 
    tty: true 

は、コマンドに注意を払っていません。

私の質問は、です。なぜコンテナはを終了していますか?これらのコンテナを同時に構築する別のソリューションはありますか?

ご返信ありがとうございます。

+3

あなたはコマンドに注意を払わないと言いますが、この場合はコマンドが重要です。コマンドが実行する限り、コンテナは存続します。 –

答えて

7

答えは実際には最初のコメントです。私はミゲルのコメントを少し説明します。

まず、Dockerコンテナが1つのコマンドを実行することを理解する必要があります。起動されたコマンドが実行されている限り、コンテナは実行されます。プロセスが完了して終了すると、コンテナは停止します。

このような理解を得て、私たちはあなたのケースで起こっていることを前提にしています。 dvptサービスを開始すると、コマンドmkdir /root/essai/が実行されます。そのコマンドはフォルダを作成してから終了します。この時点で、Dockerコンテナはプロセスが終了したため停止しました(状態0、mkdirがエラーなしで完了したことを示します)。

+0

-1あなたは適切な解決策を提示していないので、解説のような説明だけがあります。可能な解決策で答えを更新すれば、私は気が変わります。 – sensation

+0

この回答は完全に合理的で、問題を正確に説明しています。 mkdirコマンドはすぐに終了し、成功または失敗し、コンテナがすぐに終了します。解決策は、エントリ・ポイントとしてmkdirを使用しないことです。これは、ユース・ケースに応じて任意の数の方法で実行できます。 – Mike

1

解決策の1つは、終了しないプロセス、無限ループまたはバックグラウンドで連続的に実行できるものを作成することです。これは、プロセスが終了しないため、コンテナを開いたままにします。

これは非常にハックです。私はまだもっと良い解決策を探しています。

Zend Serverのイメージは、このようなものです。それらの.shスクリプトには、最終コマンドがあります。

exec /usr/local/bin/nothing 

これは、バックグラウンドで連続して実行されるファイルを実行します。私はここでファイルの内容をコピーしようとしましたが、バイナリでなければなりません。

編集: /bin/bashでファイルを終了すると、コンテナ内の新しい端末プロセスが開始され、閉じられなくなります。

関連する問題