【Docker入門】AWS lightsail上にdocker+docker-composeを入れてnginxにアクセスしてみる

## はじめに
今更dockerについて触れ合う機会があり、面白そうだったのであらためて触ってみる。
AWSのlightsailを使って、docker+docker-composeを入れて、コンテナ上でnginxを起動してアクセスしてみる。

## 開発環境
AWS,Mac

## 前提条件
AWSのアカウントがあること

## AWSのlightsailにアクセスし、Dockerを入れるためのサーバを用意する。
https://lightsail.aws.amazon.com/

にアクセスし、作成する。

![スクリーンショット 2019-11-03 11.16.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134365/0a9369ee-3e05-a22d-c816-0e9f60a642fa.png)

無料枠があって最初の1ヶ月は無料で作成できるインスタンスを選択し、OSはCentOSを選択する。
画面に従ってポチポチしていけば簡単に作成できます。

lightsailについてはこちら
https://aws.amazon.com/jp/campaigns/manga/vol1-1/?sc_icampaign=awareness_awsmanga_lightsail&sc_ichannel=ha&sc_icontent=AWSSM-1284&sc_iplace=ribbon&trk=ha_AWSSM-1284_awareness_awsmanga_lightsail_ribbon

作成後、こんな感じ。
![スクリーンショット 2019-11-03 11.16.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134365/f2b572da-0c6c-322e-beb0-27c4c7f842bc.png)

## 作成したインスタンスにログイン
Macで、ターミナルを開いて、パーミッションを変更し、キーを指定し、lightsail上で表示されたIPアドレスを入力してログインする。

<pre>
$ chmod 600 /Users/xxxxxxx/Downloads/20191102.pem
$ ssh -i /Users/xxxxxxx/Downloads/20191102.pem centos@xxx.xxx.xxx.xxx
[centos@ip-172-26-xxx-xxx ~]$
</pre>

## dokcerのインストール
<pre>
$ sudo yum install -y docker          # dockerのインストール
$ sudo service docker start           # dockerの起動
$ sudo groupadd docker                # ユーザー権限で実行できるようにしておく
$ sudo usermod -g docker centos       # 作成したグループにcentosユーザを追加
$ sudo /bin/systemctl restart docker.service
$ docker info          
</pre>

docker infoで、Version等出てくればOK
※上手くいかないときは、一度抜けて再度ログイン。

Server Version: 1.13.1

## docker-composeのインストール
<pre>
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
</pre>

docker-compose --versionで、Version等出てくればOK
※上手くいかないときは、一度抜けて再度ログイン。

docker-compose version 1.21.0, build 5920eb0

## nginxコンテナの起動

作業用のディレクトリ作成
<pre>
$ cd
$ mkdir -p dockertest/html
</pre>

nginxでアクセスした時に表示するためのファイルを用意

<pre>
$ vi dockertest/html/index.html
test
</pre>

DockerfileにNginxのコンテナイメージを設定

<pre>
$ vi dockertest/Dockerfile
FROM nginx
COPY ./html /usr/share/nginx/html
</pre>

## コンテナの起動

Dockerfileの内容でコンテナのビルドを実施


<pre>
$ cd dockertest
$ docker build -t dockertest .
$ docker run -d --rm -p 80:80 -v $(pwd)/html:/usr/share/nginx/html --name dockertest dockertest
</pre>

lightsail上のファイアウォールでは、デフォルトで22と80が許可されているので個別にポートを空ける対応はなし。
80以外の場合は、lightsail上で許可が必要。

## プロセスの確認
<pre>
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
947523FG561ax        dockertest        "nginx -g 'daemon of…"   10 seconds ago       Up 1 second         0.0.0.0:80->80/tcp   dockertest
</pre>

## SELINUXの停止

ブラウザでアクセス確認した時に弾かれてしまうので、SELINUXを停止しておく。
<pre>
$ getenforce
Enforcing
$ sudo setenforce 0
$ getenforce
Permissive
</pre>

## ブラウザでアクセス

http://xxx.xxx.xxx.xxx/

index.htmlの中身が表示されればOK

## コンテナの停止

docker ps -a　で出てきたCONTAINER IDを指定する

<pre>
$ docker stop 947523FG561ax
947523FG561ax
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ 
</pre>

## まとめ

Dockerの情報がたくさんあって勉強しやすく、技術的にも面白いなと思いました。
もっと勉強して行きたいと思います。
またlightsailも手軽に触れていいなと思った今日この頃。