LoginSignup
3
2

AWSにDockerコンテナをデプロイするには?

Last updated at Posted at 2023-12-12

このチュートリアルでは、EC2インスタンスにDockerコンテナをデプロイする方法を説明します。

このチュートリアルは、単に作業方法を説明するために用意されています。AWSでDockerコンテナをデプロイしたい場合は、Amazon Elastic Container ServiceECS)またはさらに良い選択として Amazon Elastic Kubernetes ServiceEKS)を使用することをお勧めします。これらの2つのサービスの使用方法については、別のチュートリアルで説明する予定です。

このチュートリアルでは単純にNginxサーバーをデプロイしますが、この方法を使用して完全なウェブサイトをデプロイすることもできます。例えば、WordPressサイト、Laravelサイト、ECCubeショップなどがあります。

EC2インスタンスを作成

EC2ダッシュボードにアクセスしてください。

Screenshot 2023-12-12 at 11.23.46__01.png

インスタンスを起動」をクリックしてください。

Screenshot 2023-12-12 at 11.23.46__02.png

EC2インスタンスを作成する画面に移動します:

Screenshot 2023-12-12 at 11.27.11__03.png

東京」リージョンにいるか確認してください。

Screenshot 2023-12-12 at 11.27.11__04.png

名前とタグ」セクションに移動してください。

Screenshot 2023-12-12 at 11.27.11__05.png

名前」の欄に「MyDocker」と書いてください。

Screenshot 2023-12-12 at 11.32.39__07.png

Amazon Linuxを使用していることを確認ください。

Screenshot 2023-12-12 at 11.36.30__08.png

また、t2.microを使用していることを確認してください。

Screenshot 2023-12-12 at 11.40.02__09.png

このチュートリアルでは、キーペアが要らないので使用しません。

キーペアなしで続行 (推奨されません)」を選択してください。

Screenshot 2023-12-12 at 11.49.30.png

ネットワーク設定」セクションに移動してください。

Screenshot 2023-12-12 at 11.52.35__10.png

AWSは、セキュリティグループを作成すると書いています。

Screenshot 2023-12-12 at 11.52.35__11.png

私の場合、セキュリティグループの名前はlaunch-wizard-2となります。ただし、注意してください。あなたの場合、異なる名前になる可能性があります。

次に、「インターネットからの HTTP トラフィックを許可」にチェックを入れて、インスタンスがインターネットにアクセスできるようにします。

Screenshot 2023-12-12 at 11.58.04.png

このチュートリアルでは、EC2インスタンスを自動的に起動するためにユーザーデータを使用しません。EC2インスタンスの展開に慣れてきたら、ユーザーデータをご利用いただくことをお勧めします。

その後、「インスタンスを起動」ボタンをクリックしてください。

Screenshot 2023-12-12 at 12.05.45.png

EC2ダッシュボードの画面に戻ってください。

Screenshot 2023-12-12 at 12.08.04.png

インスタンスのステータスが「実行中」になるまで待ってください。

Screenshot 2023-12-12 at 12.11.06.png

インスタンスを選択してください。

Screenshot 2023-12-12 at 12.14.30.png

次に、「接続」メニューをクリックしてください。

Screenshot 2023-12-12 at 12.14.30 copy.png

その後、この画面に移動するはずです:

Screenshot 2023-12-12 at 12.17.48.png

その後、「接続」ボタンをクリックしてください。

Screenshot 2023-12-12 at 12.17.48.png

新しいウィンドウが開くはずです:

Screenshot 2023-12-12 at 12.21.14.png

以下のコマンドを入力してください:

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インスタンスのリストページに戻り、インスタンスだけを選択してください。

Screenshot 2023-12-12 at 12.58.35.png

その後、「ネットワーキング」タブを選択してください。

Screenshot 2023-12-12 at 13.00.44.png

その後、「パブリック IPv4 アドレス」を検索してください。

Screenshot 2023-12-12 at 13.02.44.png

私の場合、パブリックIPv4アドレスは54.250.208.183です。

次に、このIPをコピーしてブラウザに貼り付けてください。すべてがうまくいくと、このページが表示されるはずです:

Screenshot 2023-12-12 at 13.04.58.png

動画

必要なら、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の組み込みセキュリティ機能を使用して、コンテナをさらに保護することができます。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2