はじめに
今更dockerについて触れ合う機会があり、面白そうだったのであらためて触ってみる。
AWSのlightsailを使って、docker+docker-composeを入れて、コンテナ上でnginxを起動してアクセスしてみる。
開発環境
AWS,Mac
前提条件
AWSのアカウントがあること
AWSのlightsailにアクセスし、Dockerを入れるためのサーバを用意する。
にアクセスし、作成する。
無料枠があって最初の1ヶ月は無料で作成できるインスタンスを選択し、OSはCentOSを選択する。
画面に従ってポチポチしていけば簡単に作成できます。
作成したインスタンスにログイン
Macで、ターミナルを開いて、パーミッションを変更し、キーを指定し、lightsail上で表示されたIPアドレスを入力してログインする。
$ 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 ~]$
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も手軽に触れていいなと思った今日この頃。