2016-11-07 8 views
-1

私はこれを理解しようとしています。ドッカーコンテナの実行時にCMDを実行してBashを開くにはどうすればいいですか?

私はUbuntuイメージに基づくドッカーファイルを持っています。私が持っている私のdockerfileの終わりに:

CMD django-admin startproject $PROJECTNAME 

Iは、ベースのUbuntuイメージが私のコマンドは、実際にこれがあれば必ず(これはない上書きされるので、/ binに/ bashのを実行するために、CMDを持っていることを以前の記事で言われました関連するかどうか)。

私が実行した場合、私が遭遇してる問題は次のとおりです。

docker run -i -t <containerid> 

何も起こりません..ドッカPSは、私が実行しても何らコンテナが

しかし、を実行されていないを示しています。

docker run -i -t <containerid> /bin/bash 

コンテナが実行され、シェル内にあり、ドッカーのpsがこのコンテナが実行中であることを示します。すべてが期待どおりに動作しますが、私のdjangoプロジェクトは存在せず、/ bin/bashを実行するとdockerfileのCMDが上書きされます。つまり、django-adminのstartprojectは実行されません。

django-adminのstartproject $ projectnameを実行すると、問題なくプロジェクトが作成され、djangoとその依存関係がすべてインストールされ、環境変数が登録されていることがわかります。

しかし、私はまだ私のdockerfileで私のCMDに問題があると思うし、ここからどこに行くのか分からない。

提供されたドッカーファイルでは、/ bin/bashでコンテナを実行しないと、コンテナは実行されません。ドッキングウィンドウ画像の

出力:

REPOSITORY   TAG     IMAGE ID   CREATED    SIZE 
<none>    <none>    cbec557d6362  About a minute ago 579 MB 
<none>    <none>    6919c19b159a  16 hours ago 

ドッキングウィンドウの実行は:

docker run -i -t cbec557d6362 
+0

2つの関連する質問は、Dockerfileを使用して画像を作成しましたか? [画像とコンテナ](http://stackoverflow.com/questions/23735149/docker-image-vs-container)の違いを理解していますか? – R0MANARMY

+0

両方の質問にYesです。 – david

+0

'docker images'の出力と正確な' docker run'コマンドを含めることができますか?あなたが正しいイメージを起動していることを確認したいだけです。 – R0MANARMY

答えて

2

私は今、新しいものがあり、元の問題ではなく、何らかの理由でコメントしています。 /bin/bashを実行すると、になり、コマンドはそのコンテナであるbashシェルで実行されます。 (Djangoプロジェクトを作成するのと同じように)コンテナ内で何でもできますが、そのシェルを終了すると、コンテナはまだ停止します(PID1プロセス(この場合は/bin/bash)が終了するとコンテナが終了します)。

django-admin startproject $PROJECTNAMEコマンドが実行されているという疑いがあります(django-admin startproject $PROJECTNAME)。が正常に完了しました。が終了しました。それはPID 1なので、コンテナは停止します。このため、docker psには何も表示されません。

ドッカーファイルにRUN django-admin startproject $PROJECTNAMEを代わりに使用し、続いてCMD /bin/bashを使用することをお勧めします。

コンテナをビルドして実行し、bashシェルに入れる必要があります。プロジェクトが作成されているかどうかを確認します。

関連する問題