👌

[ハンズオン]AWS Docker入門編

2021/09/05に公開

先日、Dockerを触れる機会があったので忘れないようシェアしたいと思います。

Dockerとは?

初心者の方向けにAWS公式のDockerに関する説明をリンク貼付しました!
https://aws.amazon.com/jp/docker/

[ポイント]
Dockerは
・コンテナ型
・ソフトウェアプラットフォーム
・すばやくビルド、出荷、実行=テスト環境の構築に向いている

とはいうものの、ものは試しというわけで早速やってみましょう!

今回は練習なのでAWS EC2環境で体験してましょう!

Docker インストール

yum install -y docker

起動・自動設定

systemctl start docker.service
systemctl enable docker.service

念の為起動しているか確認してみましょう。

ps -efH | grep docker 

これで起動の確認が取れました!

root      3759     1  0 08:57 ?        00:00:05   /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=32768:65536
root      4769  3759  0 09:03 ?        00:00:00     /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.17.0.2 -container-port 80
root      4774  3759  0 09:03 ?        00:00:00     /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 80 -container-ip 172.17.0.2 -container-port 80

今回はnginxをコンテナで動かそうと思います!
まず、作業ディレクトリを作成します。

mkdir /work
cd /work

次にhtmlファイルを作成し、適当な文言を入力しておきます。

vim index.html

#以下ファイルの中に文言入力
---------------
Hello World
--------------

今回「Dockerfile」というものを使ってnginxのイメージを作成しようと思います。
https://www.designet.co.jp/faq/term/?id=RG9ja2VyZmlsZQ

以下をファイルに入力してください。(詳細は後ほど説明)

vim Dockerfile

#以下ファイル内に入力
----------
FROM nginx
EXPOSE 80
#Docker上のディレクトリにコピー
COPY index.html /usr/share/nginx/html
#OS特有の実行させたいコマンド
CMD nginx -g "daemon off;"
----------
  • FROM nginx
    ベースとするDockerイメージを指定します。
  • EXPOSE 80
    80番ポートの開放を意味します。
  • COPY index.html /usr/share/nginx/html
    EC2内にあるファイルindex.htmlをコンテナ内の所定のディレクトリにコピーします。
  • CMD nginx -g "daemon off;"
    コンテナのデフォルトの実行コマンドを定義します。
    nginx を起動する際に daemon off; をつけることでフォアグランドでの起動が可能になります。

では作成したイメージを立ち上げてみましょう!

docker build . -t my_nginx

できたイメージの確認もついでにやってみます。

docker images

REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
my_nginx     latest    3ce060349dc5   28 minutes ago   133MB

Dockerfileで作成したイメージの結果が出ていますね!

では最後にコンテナの作成です!

docker run -d -p 80:80 --name web my_nginx

コンテナが作成されたか確認してみましょう。

CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                               NAMES
116c37fb82c4   my_nginx   "/docker-entrypoint.…"   29 minutes ago   Up 29 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   web

最後にブラウザで自分のグローバルIP/index.htmlでHello Worldと出れば成功です!

*グローバルIPのみだと以下のように表示されます。

今回はDockerの起動とDockerfileからのnginxを作ってみました。
自身もDockerは勉強始めたばかりなのでちょくちょく更新していこうと思います!

Discussion