いつもITユニプラをご愛読いただきありがとうございます。
今回は、コンテナについて記事にしました。
コンテナ技術は、ハードウェアやプラットフォームが変更になった際もすぐに移植ができ、かつ軽量に動作させることができるためデータ活用を進めるにあたっても有用な技術だと捉えています。
コンテナって何?
コンテナは、プロセスの実行空間を隔離するための仮想化技術です。
従来の仮想化技術とは異なるアプローチのシステム構築方法で、冒頭でも記述した通り移植が容易になったことで、開発工数や運用工数を削減したりすることができます。
コンテナと従来の仮想化の違い
- コンテナ
- ホストOS上にコンテナを作成しアプリを作成可能、コンテナごとにリソースの割り当てが可能
- コンテナのプロセスは、ホストOSのカーネルで動作
- カーネルを利用することで、ホストOSのコマンドやライブラリを使用可能になり、ストレージにアクセスしたりメモリ管理を利用し動作
- 従来の仮想化
- ホストOS上に仮想化ソフトウェアを用意し仮装環境ごとにゲストOSを構築し、ゲストOS上にアプリケーションを作成する構成となる
Namespaceという技術
2006年ころにLinuxカーネルに実装された技術、プロセスやファイル構造、ユーザIDなどを一つのOS内で分離することが可能な技術です。
この分離された空間はコンテナで実装されています。
このLinuxのNamespaceとアプリケーションで必要なライブラリやコマンドをインストールすることでアプリの開発をコンテナ上で実装することが可能となります。
Dckerという技術
namespaceなどコンテナの作成に必要なたくさんのコマンドをラップして、コンテナを簡単に作成できるようにするソフトウェアです。
Kubernetesは複数のDockerなどの、コンテナの管理や自動化を統合管理するツールです。
Docker一問一答
- Windowsでは使えないのか?
- Windows上にLinuxカーネルを用意することで、Dockerを実行可能です。
- コンテナにおけるバージョンアップ、開発から本番以降の考え方は?
- 開発環境のコンテナをバージョンアップ後、検証し本番環境で起動する流れがよくあるパターンです。トラブル時は旧コンテナを起動するだけで切り戻しが可能です。
- コンテナ内のデータは?
- Dockerホストのディレクトリをマウントしたり、データ専用のコンテナ(ボリュームマウント)することが多いです。
- 開発環境と本番環境のIPアドレスが異なる場合
- 起動コマンドに引数を渡すことでパラメータを変更できるよう構築します。これにより簡単にIPアドレスを合わせることが可能です。
アプリケーションで使用するポートはバッティングしてしまうと動作に影響があるため被らないようにする必要があります。
- コンテナのメリットは?
開発・検証・本番と環境を分けて運用している場合にも、同じ動作をさせることが簡単です。これにより、本番を想定した開発や検証が容易になります。
また、仮想マシンに比べイメージサイズが小さいのでリソースの節約ができます。
まとめ
コンテナ技術を取り入れることで、開発着手から本番リリースまでの期間やコストを抑えることが可能かと思います。
DXを推進している企業では、この技術の利用が拡大していっています。スピーディーにコアビジネスを展開していくには必要不可欠な技術となっているのかもしれません。