こんにちは、SCSKの林です。
Dockerの勉強として、EC2インスタンスにDockerをインストールしコンテナを環境を構築してみたのでその手順をご紹介したいと思います。
EC2を作成
以下内容でまずEC2を作成しました。
EC2設定内容
AMI | 無料対象枠のAmazon Linux 2 |
---|---|
インスタンスタイプ | t2.micro |
ネットワークセグメント | パブリックサブネット |
IP | パブリックIP付与 |
ロール | SSMが使用できるような権限 ( | ) がついたロール
その他はデフォルトです。
とりあえずインターネットに接続できるインスタンスを用意しました。
docker,docker-composeをインストール
EC2インスタンスにAWS Systems Manager(Session Manager)経由でログインし、以下コマンドを実行しました。
dockerインストール
$ sudo yum install -y docker # dockerのインストール $ sudo service docker start # dockerの起動 $ sudo usermod -a -G docker ssm-user # ssm-userをdockerグループに入れる。これでssm-userがdockerコマンドを実行できる $ sudo docker info # dockerの起動確認
上手く起動しない場合は一度ログインし直してみてください。
docker-composeインストール
docker-composeの最新バージョンは以下のサイトから確認できますので、コマンドの1.27.4のところを適宜書き換えて実行してください。
https://docs.docker.com/compose/install/#install-compose-on-linux-systems
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose $ docker-compose --version
上手く起動しない場合一度ログインし直してみてください。
dockerでnginxコンテナを立ち上げる
ファイル構成
まずはホームディレクトリに移動して、ディレクトリを作成します。
$ cd ~ $ mkdir docker-nginx-test
ディレクトリ配下の構造は以下のようにしました。
docker-nginx-test └ html #directory ー index.html # file(hogeとでも書いておく) └Dockerfile #file
Dockerfileの記述
Dockerfileの中身は以下にしました。
FROM nginx COPY ./html /usr/share/nginx/html
コンテナの起動
イメージを作成して、コンテナを起動していきます。
$ cd ~/docker-nginx-test $ docker build -t docker-nginx-test . $ docker run -d --rm -p 8080:80 --name docker-nginx-test docker-nginx-test
ここの動きについて解説します。
まず2行目のdocker buildコマンドでDockerfileに書かれている通りにDocker Imageを作成します。
Dockerfileには以下のように記載されていましたので
FROM nginx COPY ./html /usr/share/nginx/html
- 1行目:Docker Hubからnginxがインストールされたイメージをコピーしてます。
- 2行目:OS上に先ほど作成したhtmlディレクトリの配下をDocker上の/usr/share/nginx/htmlにコピーをしてきています。
上記の2行の処理が行われ、イメージが作成されます。
次に3行目のdocker runコマンドで指定したimageを基にコンテナを作成します。
-p オプションで、コンテナ内部のポート80(HTTP)を、8080ポートで外部にマッピングしています。
説明した「docker build」「docker run」の処理を図で表したものが以下になります。
EC2の用語で例えると、以下のようなものかと思います。
- 「docker build」はAWSが提供しているAMIからをEC2を起動し、指定のコマンドを実行し、カスタムAMIに落とす。
- 「docker run」はそのカスタムAMIからEC2の起動
ブラウザ上でアクセス確認
ブラウザ上で [http://<EC2のIPアドレス>:8080] にアクセス
hogeと表示されました。
hoge
今回はここまでとなります。
今後もDockerの勉強を続けていこうとおもいます。
それではまた。