私は、Webサーバー、データベースサーバー、およびWebアプリケーションが稼動しているドッカーイメージを持っているとします。アプリケーションのアップデートを再構築せずにドッカーイメージにプッシュできますか?
データベースサーバーを破損することなく、アプリケーションの更新を本番コンテナにプッシュできますか?
私は、Webサーバー、データベースサーバー、およびWebアプリケーションが稼動しているドッカーイメージを持っているとします。アプリケーションのアップデートを再構築せずにドッカーイメージにプッシュできますか?
データベースサーバーを破損することなく、アプリケーションの更新を本番コンテナにプッシュできますか?
Dockerイメージを軽量のVMイメージと同じ論理的に誤解しているように見えるので、マイクロサービスアーキテクチャを読むことをお勧めします。私が使用しているロジックは、VMがホストからOSを分離し、コンテナはプロセスを分離し、ホストはその子であるということです。したがって、同じイメージ上にWebサーバー、データベースサーバー、およびWebアプリケーションを必要としません。これらのイメージは、アプリケーションの実行方法に応じて2〜3の別々のイメージになります。
イメージは不変であるとみなす必要があります。コンテナの変更は完全に再起動したときに失われるはずです。データは、画像の外側のボリュームに配置され、コンテナに添付されます。データボリュームを介して更新をプッシュすると、その変更は再起動せずにただちに有効になりますが、アプリケーションをボリュームに移動するとバージョンが変更されない画像の利点の多くが失われます。コンテナをすべて再起動する必要があるかどうか、単一のコンテナを引き出して交換できるかどうか、または100%の稼働時間を得るために古いバージョンをスピンダウンする前に新しいバージョンを起動できるかどうかは、アーキテクチャの設計によって異なります。
マイクロサービスに言及してくれてありがとうございますが、私がドッカーの中のシェフのような構成管理システムを使用していても、それはアンチパターンですか? –
シェフは不変環境に更新を展開していますが、コンテナ内でアプリケーションを展開するためのほとんどの変更は、新しいコンテナを停止/ rm /実行すると失われます。シェフを使用してコンテナを回転させることもできますが、ドッカーの作成やKubernetesのようなこの作業に適したカスタマイズされたツールがさらにたくさんあります。 – BMitch