はじめに
こんにちは、SCSKの中村です。
今回は、初めて「コンテナ技術」というワードを聞いた私が、一から調べて整理した基礎の基礎をまとめていきます。
「コンテナ技術」についてある程度理解されている方は既知の内容になると思いますので、読み飛ばしていただいて結構です。
それでは始めていきましょう。
コンテナ技術
コンテナ技術とは?
・アプリケーションを動作させるのに必要なライブラリやアプリケーションを1つにまとめたもの
・アプリケーション間でOSを共有する仮想化技術
従来のサーバ仮想化とコンテナ技術の比較
単純に図に表してみると以下のようになります。
一般的なサーバ仮想化のメリット
・各仮想マシンのゲストOSを自由に選択可能
・柔軟なカスタマイズが可能
コンテナ型のメリット
・ゲストOSがないため、サーバの起動・再起動が速い
・全体的な動作や処理が比較的速い
コンテナ技術のまとめ
コンテナ技術には、これまでのサーバ仮想化にはなかったメリットがあります。
コンテナ技術をどのように使い、これらのメリット活かしていくのか、次のDockerの章でさらに詳しく見ていきましょう。
Docker(ドッカー)
1.Dockerとは?
・コンテナ型の仮想環境を簡単に作成、配布、実行することが可能なオープンソースプラットフォーム
・ホストマシンのカーネルを利用し、プロセスやユーザなどを隔離することで、別のマシンが動いているかのように動かすことができる
・ミドルウェアのインストールや各種環境設定をコード化して管理
2.Dockerを利用するメリット
前提:軽量で高速に起動、停止などが可能
①コード化されたファイルを共有することで、どこでも誰でも同じ環境が作れる。
→環境ごとの差分が少ない
②作成した環境を配布しやすい。
→開発環境と同じ状態を本番環境に配布することが容易
③スクラップ&ビルドが容易にできる。
→開発環境の準備にかかる時間を短縮
参考
< https://knowledge.sakura.ad.jp/13265/ >
Kubernetes(クバネティス、またはクーベネティス)
1.Kubernetesとは?
・コンテナ化されたワークロードやサービスを合理的に管理運用するためのオーケストレーションシステム
→Dockerなどを使って建てたコンテナ環境の管理をラクにする
2. Kubernetesで実現可能なこと
①アプリケーションを停止せずに更新
- 新しいアプリケーションの立ち上げ
- ネットワークの向き先を変える
- 古いアプリを終了する
という一連の動作を実行
②アプリケーションの自動復旧
処理が失敗したコンテナを再起動・入れ替えたり、ヘルスチェックに対する応答がないコンテナを強制終了
③CPUやメモリの割り当てが容易になる
CPUやメモリ、ストレージの割当、ロードバランサーやネットワークの設定など、アプリケーションの実行に必要な基盤情報をアプリケーション単位で設定可能
④低稼働率のサーバを最小限にする
Kubernetesがサーバにアプリケーションを自動でバランス良く割り振り。
⑥機密情報と構成管理
パスワードやOAuthトークン、SSHキーのよう機密の情報を保持し、管理可能。
参考
< https://kubernetes.io/ja/docs/concepts/overview/what-is-kubernetes/ >
<https://ncdc.co.jp/columns/6880/>
まとめ
コンテナ技術、Docker、Kubernetesについて基礎の基礎知識をまとめました。
今後引合が増加すると思われるため、基礎知識を得ておき、経験に生かしていきましょう。課内の検証環境などで練習するのもいいですね。
以上