2021/05/27

いまさら聞けないAWSでのDocker Composeって何?

 
  

AWSにおけるDocker Composeとは?


AWSでのDocker Composeの説明に入る前に、そもそものDocker Composeについて説明します。

Docker Composeとは、複数のコンテナで構成されるアプリケーションをひとつのコマンドで起動・停止できるツールです。

この記事ではそもそも、コンテナとは何なのか、AWSで使用するにはどうしたらいいのなど、AWS初心者の方にもわかりやすく説明していきます。

コンテナとは?


コンテナとは仮想化されたアプリケーションのことです。

仮想化されたアプリケーションという言葉では理解がしにくいでしょう。そのような方は、仮想マシンを思い浮かべると理解しやすいです。

Windows上でLinuxを使用したいとき、空のPCにLinuxをインストールするのではなく、VirtualBox・VMwareなどで仮想マシンをいれたことがある方も多いのではないでしょうか。

これらを構築する際には、何か細かい設定をせずともLinuxをインストールできたはずです。古くからある仮想マシンで例えましたが、すでに環境を構築されたアプリケーションを「仮想化されたアプリケーション」といいます。

コンテナとは、「仮想化されたアプリケーション」をそれぞれのPCで再現する技術です。

Dockerとは?


Docker(ドッカ―)とはコンテナ技術のひとつであり世界中で使用されています。Docker社が開発し、オープンソースソフトウェアとして公開されています。

例えば、Nginx(エンジンエックス)のDockerイメージを使って試しにWWWサーバーを立ててみます。以下のコマンドをDocker環境で実行してください。

docker run  -d -p 8080:80 nginx


たったこれだけのコマンドを打つだけで、WWWサーバーが起動します。

Docker Composeとは?


Docker Composeとは、docker runコマンドを複数回実行しないでも複雑な仮想アプリケーションを起動できる技術です。

例えば、Dockerでwordpressを構築してみましょう。Dockerで構築しようとすると、wordpressやmysqlをdocker runで起動して、コンテナ間通信を構築すると多くの手順を踏むことになります。誰かが作ったものをコピペしようとしたら、すべての手順を把握しなくてはなりません。

そこでDocker Composeの出番です。Docker Composeでは、あらかじめすべての設定情報を記載した.ymlファイルを準備します。.ymlファイルはテキスト形式なので簡単に情報共有が可能です。.ymlファイルを準備したらあとは以下のコマンドを実行するだけです。

docker-compose up -d


.ymlファイルの準備とひとつのコマンドだけであなたの環境にも誰かがつくった仮想アプリケーションが完全に再現することが可能となります。

AWSでDocker Composeが使用できるサービス


AWSではどうやってDocker Composeが使用できるのでしょうか。今回はその代表例である、Amazon Elastic Container Service(以下、ECS)について紹介します。

Amazon ECSとは

Amazon ECSとは、Docker Composeを簡単に使用できるサービスのことです。Dockerコンテナを簡単に実行や停止、管理できる高速な管理サービスです。以下の特徴について紹介します。

Docker Compose のサポート

Docker Composeがサポートされています。そのため、Dockerコンテナの実行および管理が可能になっています。他人がコンテナとして作成した仮想アプリケーションは、設定を変更することなく Amazon ECSを使用することで簡単に再現が可能となります。

サーバーレスのオプション

AWS Fargate(ファーゲート)を使用することによりサーバーレスでDocker Composeを使用することが可能です。AWS Fargateを使用すると、Amazon EC2を選択して、設定する必要がなくなります。

タスクはロードバランサーに登録され複数のAZ(アベイラビリティーゾーン)を渡って自動的に負荷分散されます。AWS Fargateを使用することで簡単にコンテナを管理することが可能となります。

タスク管理機能

Amazon ECSはひとつまたは複数のコンテナをタスクと呼ばれる形で管理しています。リソースに余裕がある場合には、同一のタスクを複数動作させることが可能です。これらにより非常に多くのことが可能となります。

スケジューリング機能

タスクの自動配備/自動復旧する機能を持っています。設定された数のタスクをコンテナ・インスタンスに自動的に配備することが可能です。また、タスクが異常検知した場合は自動でタスクを削除し、再作成してくれます。

セキュリティ管理機能

Amazon ECSの設定する場合は、自動でAmazon VPCを構築し、ネットワークアクセスコントロールリストやセキュリティグループで管理ができます。AWSのセキュリティ管理をそのまま適用することが可能です。

操作ログ管理機能

AWS CloudTrailを使用することで、Amazon ECSに対してAPIを実行するとAWS CloudTrailにログが残ります。どのAPIが実行されたか履歴を取得することが可能です。

安全性

ECSを使用することで安全なアプリケーションを作成することが可能です。IAMを使用することにより、各コンテナに対しアクセス制限を設けることが可能となります。各サービスへのアクセスや、コンテナからアクセスできる対象を制限することも可能です。

信頼性

ECSの月間稼働率はおよそ99.99% であることが保証されています。ECSは22(国)のリージョンで69か所のアベイラビリティーゾーン(AZ)を備え信頼性が高い構造となっています。

Amazon ECSの料金体系

Amazon ECSのサービスについて知れば、気になるのは料金でしょう。

ここからはAmazon ECSの2種類の料金体系を、運用の目的によってどちらの料金体系が向いているのか、利用する際の注意点とあわせて紹介します。

Fargate起動タイプモデル

Fargate起動タイプモデルでは、使用した分だけ料金が発生します。コンテナ化されたアプリケーションで使用するCPUやメモリの量に対して課金されるでしょう。

CPUとメモリは、コンテナイメージを取得した時からAmazon ECSタスクの終了までを対象として計算され、秒単位で課金がされます。1分間でも課金されてしまうため気を付けましょう。

コンテナの簡単な運用をする際やコンテナ化されたアプリケーションを短時間で利用するなど利用期間が限定されている場合等には、Fargate起動タイプモデルが適しているでしょう。

Amazon EC2起動タイプモデル

Amazon EC2起動タイプモデルでは、追加料金は発生しないでしょう。ただし、コンテナ使用のために作成した Amazon EC2インスタンス、EBSボリュームなどに対してのみ料金が発生します。EC2やEBSボリュームにのみ課金され、そのほかに料金がかかることはないでしょう。

コンテナ化されたアプリケーションを常に稼働させておく運用をする場合には、Amazon EC2起動タイプモデルが適しているでしょう。

AWS Docker Composeを使ってみよう


AWSにおけるDocker Composeについて理解していただけたでしょうか。今回はAmazon ECSを利用した、Docker Composeを使用する一例について紹介しました。

AWS上では、さまざまなサービスがあるためなかなかすべてを紹介しきれません。例えばEC2を自分で構築して、仮想Linuxマシンの中に手作業でDocker Composeを構築することも可能です。

理解を深めたい方はECSのようなAWSの便利機能を使う前に、あなたで構築していくこともおすすめです。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】