モジュール式
Docker のコンテナ化アプローチは、アプリケーション全体ではなく、アプリケーションの一部だけをアップデートしたり修復したりすることを重視しています。Docker コンテナを使用すると、このマイクロサービス・ベースのアプローチによるメリットがあるだけでなく、サービス指向アーキテクチャ (SOA) とほぼ同様に、複数のアプリケーション間でプロセスを共有することができます。
レイヤーとイメージのバージョン管理
Docker の各イメージファイルは、単一のイメージに結合された一連のレイヤーで構成されています。イメージが変更されるとレイヤーが作成されます。ユーザーが run (実行) や copy (コピー) などのコマンドを指定するたびに、新しいレイヤーが作成されます。
Docker はこれらのレイヤーを再利用して新しいコンテナを構築するため、構築プロセスを加速します。中間の変更はイメージ間で共有されるため、速度、サイズ、効率がさらに向上します。また、レイヤー化に不可欠な要素として、バージョン管理を行うこともできます。新しい変更があるたびに、基本的に変更ログが付くので、コンテナイメージを完全に管理できます。
ロールバック
ロールバックできることは、おそらく、レイヤー化の最も優れた点と言えます。各イメージにはレイヤーがあり、現在のイメージのイテレーションがうまくいかない場合は、以前のバージョンにロールバックできます。これにより、アジャイルなデプロイの手法がサポートされ、継続的インテグレーションおよび継続的デプロイ (CI/CD) がツールの観点から現実のものとなります。
迅速なデプロイ
かつては、新しいハードウェアを起動し、実行し、プロビジョニングして使用できるようにするためには数日を要し、その労力とオーバーヘッドは大きな負担となっていました。Docker ベースのコンテナを使用する場合は、デプロイを数秒に短縮できます。各プロセス用のコンテナを作成することで、それらのプロセスを新しいアプリケーションとすばやく共有できます。また、コンテナの追加や移動のためにオペレーティングシステムを起動する必要はないので、デプロイ時間は飛躍的に短くなります。デプロイ時間の短縮に加えて、データの作成や、コンテナによって作成されたデータの削除を簡単に、またコスト効率の良い方法で行えます。
Docker テクノロジーは、よりきめ細かく、制御可能なマイクロサービス・ベースのアプローチをその土台としており、効率性を重視しています。