docker上でコンテナを使う
作成したEC2上にdockerをいれ、いわゆるコンテナ環境を構築します
少しdockerのあつかいに慣れるところから始めます。 まずは個別のコンテナで練習してから3層構造のシステムを作りましょう。 また、さらに初歩的なコンテナの練習を付録に作ったので、 そちらをやってから以下のコンテナを走らせてみると、なおよいです
- nginx コンテナを走らせてみる
- mysql コンテナを走らせてみる
- 自作pythonアプリ(www.py)をコンテナに組み込んで(つまりコンテナを自作し、それを)走らせてみる
- 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 オプションを実行していればゴミはないはずです