フォーム読み込み中
こんにちは!クラウドエンジニアリング本部の岡崎です!
この連載企画【One Tech】も今回で7回目になります!
この記事では、仮想化技術の種類、及び、AzureにてDockerを利用するためのプロダクトの説明を行い、 Azureを利用したDockerの運用のメリットをお伝えします。
【One Tech】とは、さまざまな部署・職種のエンジニアが世の中にあるさまざまなIT関連のキーワードや流行の1つに着目し、独自あるいはその職種ならではの視点からIT関連の技術用語やトレンドについて執筆していく連載企画です。
皆さんソフトバンクと言えば何を想像しますか…?
入社して間もないころの私は、きっと「モバイル事業」を思い浮かべたでしょう。ただ、ソフトバンクではモバイル事業以外にも幅広いサービスを提供しています。私はその中でもクラウドを提供する新卒エンジニアとして「ソフトバンクと言えばクラウド!」を目指し、日々業務を行っています。
本記事では、そのクラウドのなかで利用される、コンテナエンジン Dockerの基礎知識及び、AzureにてDockerを利用するためのプロダクトの説明を行い Azureを利用したDockerの運用のメリットをお伝えします。
また、次回の第8回の記事にて、本稿の続きとして、実際にAzureにてコンテナをデプロイしていこうと思います。記事を通して、クラウドの魅力を少しでもお伝えできればと思います。
Dockerとは、仮想化技術の1つであるコンテナ型のアプリケーション実行環境のことです。仮想化技術にはホスト型・ハイパーバイザー型・コンテナ型の3種類がありますが、Dockerの仕組みの理解をより深めるために、この3種類の仮想技術を比較しながら解説してみたいと思います。
そもそも仮想化技術とは、サーバの物理リソース(CPU・メモリ・ディスクなど)を仮想的に分割・統合させることのできる技術です。この技術が普及していない時代においては、用途ごとに物理サーバを占有して使用していたため、用途の増加に応じて物理サーバを追加しなくてはいけませんでした。しかし、この仮想化技術の登場によって物理サーバを複数の仮想サーバとして利用できるようになり、物理サーバの削減やリソースの最適化を行うことができるようになりました。
ホストOSに仮想化専用ソフトウェアをインストールし、仮想サーバを管理する技術です。ゲストOSとしてLinuxやWindowsなど複数のOSの仮想環境を構築できます。
特徴として、物理マシンへのアクセスにホストOSを経由するため処理のオーバーヘッド仮想化技術の中では大きく、遅延が大きいことが欠点です。
ハードウェア上にてハイパーバイザーを利用し、上記のようにホストOSを起動せずに、仮想サーバの管理を行うことができる仮想化技術です。ハイパーバイザーではほとんどリソースを利用しないため、物理ホストのパフォーマンスを最大限利用することが出来ます。
ホストOS上でコンテナイメージを作成、1つのOSにて複数のマシンが動いているようにアプリを管理する方式です。また、コンテナはホストOSのカーネル(*1)を共有します。
通常、Webサーバコンテナ、DBサーバコンテナ、ログ管理コンテナなど複数のコンテナを1コンテナ1プロセスで利用する構成となります。1つのOS上でコンテナはプロセスとして動くので高速、コンテナの起動が手軽・高速、デプロイ時にOSの再起動が必要ないなどさまざまなメリットがあります。
しかし、ホストOSとカーネルを共有しているため、ホストOSと異なるOSを利用できない事や、カーネルをアップデートしにくいなどの欠点があります。
*1 カーネル:OSの中核となるソフトウェアでハードの資源管理やプログラムの実行を管理するものです。
Docker社が開発する、コンテナ型のアプリケーション実行環境のことです。コンテナを利用するために、Dockerはコンテナを管理するためのツール(Docker Registry、Docker export/importなど)や、開発のための環境を提供しています。
Dockerを利用することで、標準化された環境を複数の開発者で共有できることで、CI/CD(継続的インテグレーション/継続的デリバリ)に繋がり、迅速なコンテナの開発や運用が可能です。ただ一般的にDockerは、クラウドネイティブな技術なのでパブリッククラウド上で運用することが多いです。
今回はソフトバンクでもMSPを提供しているAzureを使ってDockerの概要について説明します。
Azure上にはDockerを利用できるプロダクトが複数ありますが、本稿では軽量なWebサイトの構築を想定した、Azure Container Instances (ACI)とAzure Container registry (ACR)の2つのプロダクトを用います。この2つのプロダクトを用いることでデプロイの高速化やセキュアなアクセス、リソースの最適化などさまざまなメリットがあります。この2つについて簡単に説明します。
ACIは、Azureにて提供されるコンテナサービスです。ACIではホストサーバ管理をする必要がない Container as a Service(CaaS) です。そのため、開発者はアプリケーションの開発に集中できます。
また、コマンド1つでコンテナをデプロイでき、俊敏性にも優れています。さらに、ACIではグループごとに、あたかもハイパーバイザー内であるかのようにリソースを分離することが可能で、コンテナの軽量性を活かしつつ、セキュリティに優れています。これらの特徴は、シンプルなアプリケーションやバッチ処理に最適です。また実行リソースの最適化を行え、コスト面でも優れています。
ACRは、Azure上にて提供されるDocker Registryです。Docker Registryとは、Dockerイメージを管理するためのサービスのことで、Docker RegistryにあるDockerイメージをpull(取得)したり、自分が作成したDockerイメージをpush(実行)することができます。また、ACRではAzure ADなどを利用することで、公開範囲を限定したプライベートなDocker Registryを提供しています。これによってAzureならではの、セキュアなイメージ管理を実現できます。
本稿ではAzureにてDockerを利用するためのプロダクトの説明を行いました。また、AzureにてDockerを利用することのメリットをお伝え出来たかと思います。
特に、ACIを使うとDockerを利用するためにホストOSサーバの管理をすることなく、環境構築、及び運用ができ、大変便利だと感じました。
ただ、実際にACIに触れてみないとわからないこともある思うので、次回の【One Tech】にて、実際に上記のプロダクトを用いて、Azure上にコンテナをデプロイしていこうと思います。お楽しみに~!!
条件に該当するページがございません