はじめに
コンテナの基礎勉強会の内容メモです。
コンテナ
OSSの仮想化技術。
docker
アプリケーションの動作環境をコンテナにデプロイするための単位。
VMと比べて軽量で高速。
コンテナへデプロイの流れ
1.コンテナを定義(DockerFile)
2.コンテナをDockerFile通りに作成、保管。
3.Dockerのimageから起動
VMとの違い
OSの上にHypervisorが存在せずカーネルが存在する。コンテナにはOS自体はなく一つのサーバの上でライブラリのようにLinuxやWindowsが動く。
メリット
・アプリケーションの環境差異を減らせる。
・テスト環境では動くが本番環境で動かないという事態を防げる。
・環境構築やセットアップの手間を減らせる。
kubernetes
1つのホストではなく複数のホストで動かしたい場合
・docker-composeを使う方法
単一のホストで複数のコンテナを組み合わせて実行する仕組み
のdocker-composeだと自動復旧やアップデートができない。
・kubernetesを使う方法
kubernetesは複数のホスト上でコンテナを適切に動かし自動復旧できる。
開発側のメリット
OS以下の層に過度な注意を向けることなく開発に専念できる。
ただしコンテナの中のソースコードやミドルウェアは意識しなくてはならない。
コンテナを用いた設計
・ステートレス
コンテナが停止した場合も想定してにコンテナの外にセッションやファイルを管理する。
・1つのコンテナに1つの役割
tomcat,apache,mysqlなどそれぞれを別のコンテナに管理しなくてはならない。
例え
コンテナはレトルトや冷凍食品のようにいつでもどこでも同じ味で簡単に作れる。
自分で環境構築する場合は1からチャーハンを作るようなもの。