Server Build Exercises on AWS (Amazon Web Services) 2022 edition

docker上でコンテナを使う

作成したEC2上にdockerをいれ、いわゆるコンテナ環境を構築します

少しdockerのあつかいに慣れるところから始めます。 まずは個別のコンテナで練習してから3層構造のシステムを作りましょう。 また、さらに初歩的なコンテナの練習を付録に作ったので、 そちらをやってから以下のコンテナを走らせてみると、なおよいです

  1. nginx コンテナを走らせてみる
  2. mysql コンテナを走らせてみる
  3. 自作pythonアプリ(www.py)をコンテナに組み込んで(つまりコンテナを自作し、それを)走らせてみる
  4. nginx + www.py + mysql のシステムをコンテナベースで構築してみる

ちなみに、 nginx + www.py + mysql のシステムは、 単に3つのコンテナを組み合わせたものとは異なります。 じつのところ少しインチキをしています;-) docker社推奨の1コンテナ1アプリのコンテナ群を連携させる構成は演習問題としておきます

dockerについて少しだけ補足

このあと出てくるコマンドについて少しだけ補足します。 もう少し詳しい説明も付録に書きましたので、そちらも参照してください

まず、コマンドは

docker コマンド オプション コンテナ名

という形式です

この構築ガイドで使うコマンドは run と ps くらいです (スクリプトのなかでは、それら以外に build exec start stop も使っています)

docker run オプション コンテナ名

docker run は2つの操作を同時に行ってくれる便利なコマンドです。 コンテナを作成(docker build)し、 作成したコンテナを開始(docker start)してくれます。 自分が知らない(OS上にイメージが無い)コンテナイメージだった場合には、 Docker Hub(hub.docker.com)から自動的に拾ってきてくれます。 有名なオープンソースソフトウエアはDocker Hubにイメージがあるため、 たいていの場合コンテナを自作する必要はありません。 自分たちの開発したソフトウエアのコンテナを作る必要はありますが、 周辺のインフラ基盤は既存のイメージが利用可能なことが多いです

登場する run のオプションは次のあたりです

-d             サーバとして実行(正確にはdaemon, 実行したターミナルを切り離す)
-it            実行したコンテナにログインしたい時に指定する(おもにデバッグ用途)
--rm           コンテナの終了時に、ゴミを消したい
--name 名前    実行したコンテナ(いわゆるインスタンス)に名前を付けて区別しやすくする
-p hport:lport コンテナの外からアクセスさせたいポートを開く呪文
               :を使う類似のオプションは、みな「ホスト(コンテナの外)側:コンテナ(の内)側」です

dockerが動かしているコンテナ一覧をみるコマンドが ps です(いわゆる ps をとります)。 コンテナが動いているか?を確認するには

docker ps

を実行します。終了したコマンドのゴミまで全部表示したいなら

docker ps -a

です。 ちなみに docker run を –rm オプションを実行していればゴミはないはずです

Last updated on 25 Nov 2021
Published on 25 Nov 2021
Copyright (C) 2021-2022 Ken'ichi Fukamachi, All rights reserved. CC BY-NC-SA 4.0
We appreciate AWS Academy Japan for the offer of the learning environment.

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.