Dockerの初心者からの別の質問があります。現在、Dockerイメージをbash
で「デバッグモード」で実行しているため、実行時にアプリケーションのOS環境などを検査できるシェルを入力するために実行中のインスタンスにdocker attach
を実行できます。Docker実行インスタンスに接続するためのベストプラクティスの再実行
docker run <image-id> -d -it bash -c “<start application in background>; bash”
私はすなわちCMD <start application in background>; bash
にCMD <start application in foreground>
からDockerfile
内部CMD
を変更、私はbash
が常に含まなければならないかどうかを疑問に思って。
これは、「プロダクションモード」セキュリティ上の理由から
に不適切である -
、ドッカーはapplication isolation tool, not an OS virtualization toolであることの光で?実行中のインスタンスにアタッチすることが許可されているその他の理由でですか?
プロダクションでは使用しないでください。あなたはアプリで何をしていますか?一般的には、あなたのアプリケーションを 'bash'ではなく、最前面プロセス(PID 1)にしたいと思っています。あなたはset-and-forgetのようなコンテナを扱うことに慣れたがっています。あるいは、生産現場にいれば手動でアクセスする必要があるものではありません。 [Cattle vs Kittens]全体(https://www.google.com/search?q=docker%2Bcattle%2Bvs%2Bkittens)のこと。 – ldg
さらに、あなたのdevのコンテナをプロダクションのコンテナと同じにするのが理想的です。したがって、一時的なテストの場合以外のdevでの 'bash'アプローチも使用しません。必要に応じて後でコンテナにいつでも 'exec ...'を付けることができます。 – ldg
@ldg優れています。 (初心者のために、私はまだドッカーの幹部について知らなかった。答えとしてあなたのコメントを書きたいなら、すぐにそれを受け入れるだろう。 – Drux