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


はじめに

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

開発環境

AWS,Mac

前提条件

AWSのアカウントがあること

AWSのlightsailにアクセスし、Dockerを入れるためのサーバを用意する。

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

無料枠があって最初の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

作成後、こんな感じ。

作成したインスタンスにログイン

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


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

dokcerのインストール


$ 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          

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

Server Version: 1.13.1

docker-composeのインストール


$ 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

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

docker-compose version 1.21.0, build 5920eb0

nginxコンテナの起動

作業用のディレクトリ作成


$ cd
$ mkdir -p dockertest/html

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


$ vi dockertest/html/index.html
test

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


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

コンテナの起動

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


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

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

プロセスの確認


$ 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

SELINUXの停止

ブラウザでアクセス確認した時に弾かれてしまうので、SELINUXを停止しておく。


$ getenforce
Enforcing
$ sudo setenforce 0
$ getenforce
Permissive

ブラウザでアクセス

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

コンテナの停止

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


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

まとめ

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