プログラムの実行に必要なライブラリ群を1つのイメージファイルに固めたものをコンテナといい、コンテナ化するメリットは、開発環境と実行環境を同一にすることができるという点です。具体的には、あらかじめプログラムの動作に必要なコンテナイメージを作っておいて、そのイメージファイルを開発者に配布して素早く開発に着手できるようにしたり(①②③の部分です)、本番サーバにデプロイすることで開発環境と同一の環境を本番環境に反映できる(②⑧⑨の部分です)ということです。

コンテナに精通した開発者が、プログラム開発に必要なライブラリを① dockerファイルに記述してコンテナイメージを作成します。それをコンテナレジストリと呼ばれる② ECRにpushして保存します。新たな開発者がプロジェクトに参画した際に② ECRから該当コンテナイメージを③ pullして開発環境を構築するように伝えます。この手順を踏むことで、③ pullした瞬間に開発環境が整います。 コンテナイメージを使わず個別に開発環境を作ろうとすれば2~3日程度要してしまいます。しかもパソコンの環境によってはライブラリのバージョンを一致させれない場合もあります。しかしコンテナを使えば、ライブラリの一部を追加変更する際も③ pullするだけです。
実際の開発過程では、開発者が修正したソースコードを④ CodeCommitに対してpushすると、⑦ CodePipelineが発火して⑤ CodeBuild、⑥ CodeDeployを順次起動して定義ファイルに沿ってデプロイ作業が自動実行され、⑧ ECSが必要な数の⑨ EC2インスタンスを起動後、修正ソースがそれらEC2に反映されます。その場合も、開発環境に③ pullしたコンテナイメージと同一のコンテナイメージを⑨ EC2にpullされますので、開発環境と同一の環境でプログラムが実行されるというしくみです。コンテナ化する意味がここにあります。