#はじめに
コンテナ開発環境をAWS上に構築します。
なお、本記事は以下のUdemy講座を元にした覚書です。
米国AI開発者がゼロから教えるDocker講座
#準備
-
コンソールよりAWSのEC2インスタンスを生成
https://aws.amazon.com/jp/console/ -
OSはUbuntuなどを選択
-
インスタンスが起動したらログインし、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}