Dockerは簡単に言えば一つのLinuxサーバー内に複数の分離されたOS環境を作る技術(コンテナ型仮想化)です。(Windowsコンテナとかもあるけど)
「分離されたOS環境」というのは、OSの最もコアになるKernelという部分だけを共有し、OS上で動作するKernelの機能を使う各種プログラム(基本的なOSのコマンド等を含む)を個別の「コンテナ」内で実行することによって、1台のサーバーの各種リソース(CPU/メモリ等)を共有する複数のOS環境を作るものです。
EC2はコンテナとか無関係の従来からある仮想サーバーを提供するサービス(Amazonの商品)の名前なので、比較すること事態にあまり意味がありません。
普通の「仮想サーバー」は、物理サーバ同様に管理者がログインしてミドルウェアをインストールしたりして使えるようにしますが、Dockerの場合は基本的に直接ログインするのではなく、ベースとなるコンテナイメージに対して、追加で行う作業をDockerfileというテキストファイルに記述して、これを「ビルド」することで起動すればすぐ特定のアプリケーション(WEBサービスやDBサービス等)が動作する状態の「コンテナ」を作ります。
そのコンテナは同一カーネルが動作しているDockerホスト上であれば基本的にどこで実行してもOS上で動く環境は全く同じものが再現される(冪等性がある)のがメリットの一つです。
なので、例えば今EC2で借りた「仮想サーバー」を使っているとして、将来Amazon以外の別の会社のクラウドサービスに「仮想サーバー」を乗り換えようとした時に何が必要になるか、とか考えると、コンテナのメリットは大きいことがわかると思います。
(引越し先で借りたサーバーにログインして前の環境と同じようにセットアップして…という手間がない)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。