LoginSignup
4
4

More than 3 years have passed since last update.

AWSにコンテナ環境を構築する

Last updated at Posted at 2020-12-12

はじめに

コンテナ開発環境をAWS上に構築します。
なお、本記事は以下のUdemy講座を元にした覚書です。
米国AI開発者がゼロから教えるDocker講座

準備

  1. コンソールよりAWSのEC2インスタンスを生成
    https://aws.amazon.com/jp/console/

  2. OSはUbuntuなどを選択

  3. インスタンスが起動したらログインし、Dockerをインストール

# sshでAWSにログイン
ssh -i /Users/yukokanai/work/aws/ssh/mydocker.pem ubuntu@ec2-13-230-103-136.ap-northeast-1.compute.amazonaws.com

# dockerインストール
sudo apt-get update
sudo apt-get install docker.io

# dockerグループを作ってubuntu(ユーザー)を入れる(sudoなしでdockerを使える様にする)
sudo gpasswd -a ubuntu docker

# 一度ログアウトしてからもう一度入り直すと使える様になる
exit

AWSのインスタンスにimageをアップしコンテナ起動

いくつかあります。制約などに応じて使い分けてください。

手段①Docker HubなどのレジストリにDocker imageをpullする

インスタンスがネットにつなげられない場合は使えないです。

1.Docker Hubにアカウントを作成
https://hub.docker.com/

2.ローカル環境にDockerをインストール

3.ローカル環境にてimageファイルを作成

docker build -f Dockerfile . {image名(repository)}:{tagname}

4.ローカル環境よりDockerHubにpush

docker push {アカウント名}/{image名(repository)}:{tagname}

5.AWSにログインし、DockerHubよりpull

docker pull {アカウント名}/{image名(repository)}:{tagname}

6.DLされたimageファイルよりコンテナ起動

docker run -it {imageID}

手段②DockerfileをGitHubから取得する

ビルドコンテキストの差異が出る可能性がある
Cloudがネットにつなげられない場合は使えない

1.Git Hubにアカウントを作成
https://github.co.jp/

2.ローカル環境にGitをインストール(Macの場合デフォルトで入っています)

3.ローカル環境にてリポジトリ作成

# ローカルリポジトリ作成
cd {ディレクトリ名}
git init
git status

# リモートリポジトリに紐付け
git remote add origin git@github.com:{ユーザー名}/{リポジトリ名}.git

3.ローカル環境にてDockerfileを作成(置き場所はローカルリポジトリの中)

4.ローカル環境よりDockerfileをGit Hubにpush

# Dockerfileをコミット
cd {ディレクトリ名}
git add .
git commit -m "こめんと"
git push origin {リポジトリ名}

5.AWSにログインしGitをインストール

sudo apt-get update
sudo apt-get install git

6.AWSにてリポジトリを作成し、Dockerfileファイルをpull

# ローカルリポジトリ作成
cd {ディレクトリ名}
git init
git status

# リモートリポジトリに紐付け
git remote add origin git@github.com:{ユーザー名}/{リポジトリ名}.git

# pull
git pull origin {リポジトリ名}

7.AWSにて、imageファイルを作成

# ビルド
docker build -f Dockerfile . {image名}:{tagname}

# imageファイルが作成されていることを確認
docker images

8.作成されたimageファイルよりコンテナ起動

docker run -it {imageID}

手段③Dockerfileをファイル転送する

ビルドコンテキストの差異が出る可能性がある
Cloudがネットにつなげられない場合は使えない

1.ローカル環境にDockerをインストール

2.ローカル環境にてDockerfileを作成

3.sftpにてAWSへファイル転送(インスタンスは起動しておく)

# sftpでAWSへログイン
sftp -i /Users/yukokanai/work/aws/ssh/mydocker.pem ubuntu@ec2-13-230-103-136.ap-northeast-1.compute.amazonaws.com

# 圧縮ファイルをAWSインスタンスへput
put Dockerfile /home/ubuntu

# ログアウト
exit

4.AWSにログインし、imageファイルを作成

# ビルド
docker build -f Dockerfile . {image名}:{tagname}

# imageファイルが作成されていることを確認
docker images

5.作成されたimageファイルよりコンテナ起動

docker run -it {imageID}

手段④Docker imageを圧縮して送る

他手段に比べてimageファイルはサイズが大きいので時間がかかる

1.ローカル環境にDockerをインストール

2.ローカル環境にてimageファイルを作成

docker build -f Dockerfile . {image名}:{tagname}

3.imageファイルを圧縮

docker save {imageID} > myimage.tar

4.sftpにてAWSへファイル転送(インスタンスは起動しておく)

# sftpでAWSへログイン
sftp -i /Users/yukokanai/work/aws/ssh/mydocker.pem ubuntu@ec2-13-230-103-136.ap-northeast-1.compute.amazonaws.com

# 圧縮ファイルをAWSインスタンスへput
put myimage.tar /home/ubuntu

# ログアウト
exit

5.AWSにログインし、圧縮ファイルを展開してimageファイルを作成

# 圧縮ファイルを展開
docker load < myimage.tar

# imageファイルが作成されていることを確認
docker images

6.作成されたimageファイルよりコンテナ起動

docker run -it {imageID}
4
4
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
4
4