このチュートリアルでは、EC2インスタンスにDockerコンテナをデプロイする方法を説明します。
このチュートリアルは、単に作業方法を説明するために用意されています。AWSでDockerコンテナをデプロイしたい場合は、Amazon Elastic Container Service(ECS)またはさらに良い選択として Amazon Elastic Kubernetes Service(EKS)を使用することをお勧めします。これらの2つのサービスの使用方法については、別のチュートリアルで説明する予定です。
このチュートリアルでは単純にNginxサーバーをデプロイしますが、この方法を使用して完全なウェブサイトをデプロイすることもできます。例えば、WordPressサイト、Laravelサイト、ECCubeショップなどがあります。
EC2インスタンスを作成
EC2ダッシュボードにアクセスしてください。
「インスタンスを起動」をクリックしてください。
EC2インスタンスを作成する画面に移動します:
「東京」リージョンにいるか確認してください。
「名前とタグ」セクションに移動してください。
「名前」の欄に「MyDocker」と書いてください。
Amazon Linuxを使用していることを確認ください。
また、t2.microを使用していることを確認してください。
このチュートリアルでは、キーペアが要らないので使用しません。
「キーペアなしで続行 (推奨されません)」を選択してください。
「ネットワーク設定」セクションに移動してください。
AWSは、セキュリティグループを作成すると書いています。
私の場合、セキュリティグループの名前はlaunch-wizard-2となります。ただし、注意してください。あなたの場合、異なる名前になる可能性があります。
次に、「インターネットからの HTTP トラフィックを許可」にチェックを入れて、インスタンスがインターネットにアクセスできるようにします。
このチュートリアルでは、EC2インスタンスを自動的に起動するためにユーザーデータを使用しません。EC2インスタンスの展開に慣れてきたら、ユーザーデータをご利用いただくことをお勧めします。
その後、「インスタンスを起動」ボタンをクリックしてください。
EC2ダッシュボードの画面に戻ってください。
インスタンスのステータスが「実行中」になるまで待ってください。
インスタンスを選択してください。
次に、「接続」メニューをクリックしてください。
その後、この画面に移動するはずです:
その後、「接続」ボタンをクリックしてください。
新しいウィンドウが開くはずです:
以下のコマンドを入力してください:
sudo su
yum update -y
yum install -y docker
yum install -y libxcrypt-compat
usermod -a -G docker ec2-user
id ec2-user
newgrp docker
cd /home/ec2-user/
curl -L https://github.com/docker/compose/releases/download/1.28.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
systemctl enable docker.service
systemctl start docker.service
vim docker-compose.yaml
docker-compose.yamlファイルに次のコードを追加してください:
version: '3'
services:
nginx:
image: nginx
ports:
- "80:80"
docker-compose.yaml ファイルを保存し、次のコマンドを実行してください。
docker-compose up -d
EC2インスタンスのリストページに戻り、インスタンスだけを選択してください。
その後、「ネットワーキング」タブを選択してください。
その後、「パブリック IPv4 アドレス」を検索してください。
私の場合、パブリックIPv4アドレスは54.250.208.183です。
次に、このIPをコピーしてブラウザに貼り付けてください。すべてがうまくいくと、このページが表示されるはずです:
動画
必要なら、Youtubeで動画を作成しました。
なぜウェブアプリケーションにDockerを使用するのですか?
Dockerは、コンテナと呼ばれる緩やかに隔離された環境でアプリケーションをパッケージ化して実行する機能を提供します。この隔離とセキュリティにより、特定のホスト上で多くのコンテナを同時に実行できます。
DOCKERのWEBホスティングにおける利点
DockerはWEBホスティングにどのような利点をもたらすのでしょうか?以下は、WEBホスティングの文脈でDockerが提供するいくつかの主要な利点です:
開発プロセスの簡素化
従来、WEBホスティング環境をセットアップするには、必要なサービスやライブラリを手動でインストールおよび構成する必要がありました。Dockerはそのコンテナ技術を用いて、このプロセスを簡素化します。Dockerを使用すると、アプリケーションの実行に必要なすべてのサービスを含むコンテナを作成できます。このコンテナは簡単に起動、停止、および削除でき、開発全体が簡素化されます。
スケーラビリティ
WEBホスティングの主要な課題の1つは、異なる量のトラフィックを処理することです。ウェブサイトが高いトラフィックを経験する場合や、比較的低い場合があります。Dockerのコンテナ技術を使用すると、需要に応じてアプリケーションを簡単にスケーリングできます。
同じアプリケーションの複数のDockerコンテナのインスタンスを実行することで、トラフィックの増減に効果的に対応できます。需要が低いときは、実行中のコンテナの数を減らすだけで済みます。この弾力性により、DockerはWEBホスティングにおいて強力なツールとなります。
リソース効率
Dockerコンテナは軽量であり、ホストシステムのOSカーネルを共有しているため、従来の仮想マシンよりもリソース効率が向上しています。これは、複数のDockerコンテナを単一のマシンで実行でき、リソース枯渇の心配がないことを意味します。WEBホスティングの文脈では、これにより単一のサーバー上で複数のウェブサイトをホストし、リソースの利用を最大限に活用し、ホスティングコストを削減することができます。
分離とセキュリティ
DockerコンテナはホストシステムのOSカーネルを共有していますが、互いに分離して実行されます。これにより、1つのコンテナのプロセスが他のコンテナに干渉することはありません。ウェブホスティングでは、同じサーバー上で複数のアプリケーションやウェブサイトを実行している可能性があるため、この分離は大きな利点です。
さらに、Dockerはコンテナのリソース使用量を制限するなど、いくつかのセキュリティ機能を提供しています。また、seccompプロファイルやAppArmorなどのDockerの組み込みセキュリティ機能を使用して、コンテナをさらに保護することができます。