• 日本語
    • English (英語)
Avinton JapanAvinton JapanAvinton JapanAvinton Japan
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ

Virtualisation and Container (仮想化とコンテナ) – Ansible, Docker and Kubernetes

  • ルーティング
  • データベースの命名規則
  • 三目並べ – 2.〇×を交互にゲーム盤に入るようにしよう
  • 三目並べ – 3.勝敗がつくようにしよう
  • クリーンコード(Clean Code)
  • 三目並べ – 4.「スタート」「リセット」ボタンをつけよう
  • 三目並べ – 5.先攻後攻を決めて、コンピュータ対戦にしよう(前編)
  • インフラストラクチャー(サーバー、コンポーネント、RAID)
  • 機械学習入門者向け Support Vector Machine (SVM) に触れてみる
  • YOLOv8を用いた物体検出
  • 正規表現とパイプ
  • 機械学習エンジニアに必要なスキル
  • 軽量版Kubernetesディストリビューション – k0s クラスターの構築
  • ファイル操作コマンド
  • グループとユーザー
  • 困った時に使うコマンド
  • 一般グループのユーザーとグループ
  • プライバシーポリシー
  • 三目並べ – 6.先攻後攻を決めて、コンピュータ対戦にしよう(後編)
  • フロントエンド開発のための環境構築
  • ファイル検索コマンド
  • 質問
  • 仮想化環境のディスク容量を拡張する
  • ユーザー権限とアクセス権
  • データ分析基礎 – Part1
  • 三目並べ – 0.導入
  • テキスト処理
  • データベースへのデータロード
  • 機械学習概要1
  • 機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみる
  • ファイル管理
  • SSHを使用してホストOSからゲストOSに接続する
  • 機械学習入門者向け ChainerRLでブロック崩しの学習
  • 機械学習入門者向け ランダムフォレストによる Kaggle Titanic生存者予測
  • 機械学習概要2
  • データ分析基礎 – Part 2
  • 機械学習入門者向け 分類と回帰の違いをプログラムを書いて学ぼう
  • フロントエンドのWeb開発について
  • ダイナミックルーティング
  • 三目並べ – 1.ゲーム盤を作ろう
  • 【Python入門】Python Numpy チュートリアル
  • Amazon EC2 インスタンスの初期設定をしよう
  • AmazonEC2とVPCでネットワークとサーバーを構築しよう
  • Apache NiFi Exercise
  • Apache NiFi データパイプライン基礎
  • Apache NiFiの環境設定
  • Apache Spark 基礎
  • Apache SparkとApache Zeppelinの概要と環境構築
  • Apache Superset maptoolの使い方
  • Apache Superset 基礎
  • Apache Superset 概要と環境構築
  • Apache Zeppelin 基本機能
  • APIのデモンストレーション
  • Avinton Academy コンテンツガイド
  • AWS CLIをインストールしてコマンド操作しよう
  • AWS CLIを使ってEC2のファイルをS3へアップロードしよう
  • AWS Route 53を使って独自ドメインのWebページを表示させてみよう
  • AWSアカウントの作成と必ずやるべきセキュリティ対策
  • AWSのEC2インスタンスでWordPressブログを公開してみよう
  • AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説
  • CCNA
  • Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
  • CISCO 1800ルータセットアップ
  • CSV import & export – Node.js, mySQL – 1
  • CSV import & export – Node.js, mySQL – 2
  • Docker Compose(Nginx + Flask + MySQL)演習
  • Docker Engineのubuntu上へのinstall
  • Docker 概要とセットアップ
  • Docker, Kubernetesの学び方について
  • Dockerコンテナイメージの最適化/ベストプラクティス
  • DockerとApacheを使ってWebサーバーを構築しよう
  • EC2からS3へ自動でぽいぽいアップロードするスクリプトの作成
  • ESP32-CAMのサンプルアプリケーションを実行する
  • 01 – Sparkfun Inventor’s Kit の準備
  • 02 – Sparkfun Inventor’s KitでLチカ
  • 03 ポテンショメータでLEDの点滅間隔をアナログ入力する
  • 04 フォトレジスタで明るさに反応するシステムをつくる
  • 05 LCDに文字列を表示する
  • 06 – BME280とLCDを組み合わせて温度計をつくる
  • ESP32とArduino IDE/PlatfromIOでHello Worldアプリケーションの実行
  • ESP32と超音波センサー HC-SR04 で物体の距離を計測する
  • ESXi – Switchの追加とVLAN
  • ESXi – VyOS
  • ESXi – 小規模ネットワーク 構築
  • Gitとは
  • VS CodeでGitHub Copilotを設定する
  • VSCode リモート開発環境
  • GNS3のセットアップ
  • Kubernetesクラスター上へのOpenVINOモデルサーバーを使用したサンプルアプリケーションのデプロイ
  • Linuxとは
  • NAT
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – Socket.IO編
  • NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション
  • OpenCVのテストプログラム
  • PacketTracerのセットアップ
  • Pandasによる構造化データ分析
  • PCからルータ、スイッチへのSSH接続設定
  • PostGIS exercise
  • PostgreSQL – Python – Apache – Bootstrap
  • MySQLとMySQL Workbench のセットアップ
  • PostgreSQL Setup
  • PostgreSQL – インデックスを利用したパフォーマンス改善方法
  • PostgreSQL – パーティショニングを利用したパフォーマンス改善方法
  • PostgreSQLによるデータ分析
  • postgreSQLへのshp fileのimport
  • Python2.7とOpenCVのインストール
  • Python3.8 と OpenCV のインストール (Ubuntu20.04LTS)
  • Pythonでデータベースを操作する
  • Pythonで画像を分類するプログラムを作成する
  • Pythonによるマルチスレッドプログラミング実践
  • Raspberry Pi 4B のセットアップ
  • Raspberry PiとBME280を使用して温度と湿度、気圧を読み取る
  • REDIS
  • Redux基礎 – 主要な概念と用語
  • Ruby on Rails を MySQLでセットアップ
  • Ruby on Railsによる簡単なウェブアプリケーション
  • SampleアプリケーションのKubernetes上へのデプロイ
  • Scala 基礎
  • scikit-learnとは
  • Spark SQL エクササイズ
  • SparkMLによるKaggle Titanic生存者予測
  • SparkMLによる住宅価格予測
  • SQL 便利な関数
  • Ubuntuの基本設定
  • uhubctlでUSBデバイスのオンオフをコントロール
  • Terraform入門 2 – Terraformのstate管理
  • Terraform入門 1 – TerraformでAWS上にEC2インスタンスを作成する
  • Virtualisation and Container (仮想化とコンテナ) – Ansible, Docker and Kubernetes
  • viエディタ
  • VLAN
  • VMware ESXi サーバー構築
  • Webアプリ開発に欠かせないGoogle Chrome DevToolsの基本
  • Windows Server 2012 R2 Hyper-V
  • YOLOv5を用いた物体検出
Home Avintonアカデミー Virtualisation and Container (仮想化とコンテナ) – Ansible, Docker and Kubernetes
Ansible logo
Kubernetes

はじめに

昨今のIT業界では”コンテナ”をよく耳にする機会が増えたかと思います。コンテナの話をする上で関連する技術として仮想化があります。コンテナは仮想化技術のうちの一つと言えますが、どのような関連があるでしょうか。本記事では仮想化のおさらいからコンテナ技術の関連に関して説明します。

目次

1. 仮想化とは

1.1 仮想化の方法
1.2 ホスト型
1.3 ハイパーバイザー型
1.4 コンテナ型
1.5 各仮想化との比較

2. コンテナ

2.1 Docker
2.2 Kubernetes
2.3 ユースケース

仮想化とは

仮想化とは、大まかにインフラを抽象化することにあります。具体的には、複数の物理マシンのサーバをソフトウェアにより一つの物理マシンサーバに見せかけ、さらに必要なリソースに分けた仮想的な物理マシンを作り出すことができます。
あくまでも見せかけなので、論理的に区切られた領域になります。仮想化の目的としては、物理マシンのリソースを効率よく使用することにあります。

仮想化の方法

仮想化には大まかに3通りの方法があります。

  • ホスト型
  • ハイパーバイザー型
  • コンテナ型

ホスト型

ホスト型は物理マシンサーバにLinuxやUbuntu等のホストOSをインストールし、1ソフトウェアとしてホスト型の仮想化ソフトウェアをインストールします。ホスト型仮想化ソフトウェアの例として、VMware Fusion、VMware Workstation Player、Oracle VM VirtualBox等があります。仮想化ソフトウェア上に仮想マシンを作成することができます。

特徴としては、ホストOSと異なるOSをゲストOSとしてインストールすることができます。また、仮想化ソフトウェア上に仮想マシンとして稼働しているため仮想化ソフトウェア以外にもホストOS側にリソースが許す限りアプリケーションを実行することができます。仮想化ソフトウェアはホストOS上の1プロセスとして動くため、仮想環境を動かすには仮想化ソフトウェアのオーバヘッドが含まれます。物理マシンリソースとしては、ホストOSのオーバヘッドも含まれるため仮想環境を動かすにはかなりのオーバヘッドが含まれてしまいます。

図1 ホスト型仮想化のイメージ

ハイパーバイザー型

ハイパーバイザー型は物理マシンにハイパーバイザー型仮想化ソフトウェアをインストールし、仮想化を実現します。ハイパーバイザー型仮想化ソフトウェアの例としては、VMware ESXi、Hyper-V、LinuxのKVM(Kernel-based Virtual Machine)があります。

特徴としては、物理マシンのホストOSが不要となりハイパーバイザー型の仮想化ソフトウェアが必要になります。
そのためハードウェアを直接制御できるため、仮想環境を動かす際にはハーパーバイザーのみのオーバヘッドが必要になります。各仮想環境間は独立しており、互いに領域を共有することができません。

図2 ハイパーバイザー型仮想化のイメージ

コンテナ型

コンテナ型は、物理マシンサーバにホストOSをインストールしコンテナ管理ソフトウェアをインストールします。代表例としてはdockerになります。コンテナ型では、コンテナイメージとしてアプリケーションやソフトウェアを実行環境とともに包括します。そのコンテナイメージを起動することによりホストOSの1プロセスとしてコンテナイメージ内のアプリケーションやソフトウェアが実行されます。

特徴としては、コンテナイメージは軽量なファイルにより容易に共有、編集が可能です。コンテナ型仮想化ソフトウェアも軽量なためコンテナ実行時のオーバヘッドが小さいです。隔離レベルはホストOSのリソースを共有するため、他のコンテナやアプリケーションと共有レベルを調節する必要があります。

図3 コンテナ型仮想化のイメージ

ホスト型、ハイパーバイザー型の仮想化とコンテナ型仮想化

これまでホスト型、ハイパーバイザー型の仮想化とコンテナによる仮想化に関して説明してきましたがそれぞれの差をまとめてみます。

表1 ホスト型、ハイパーバイザー型、コンテナ型仮想化の比較

ホスト型 ハイパーバイザー型 コンテナ型
オーバヘッド ホストOSと仮想化ソフトウェア 仮想化ソフトウェア ホストOSとコンテナ実行ソフトウェア
OS ホストOSとゲストOS ゲストOS ホストOS
隔離レベル 仮想化ソフトウェアとホストOS間は隔離されている。仮想化ソフトウェア上のゲストOS間も隔離されている 仮想化ソフトウェア上のゲストOS間も隔離されている ホストOSとリソースを共有している

コンテナ

コンテナはアプリケーションと実行に必要なライブラリ等を含めた環境をイメージとしてパッケージングして他のプロセスとは分離するための技術です。
コンテナ型仮想化を実現するソフトウェアとしてdockerが有名です。

docker

dockerはコンテナを管理、実行するためのソフトウェアでdocker自体は コンテナではなくコンテナは”技術”,dockerは”仕様”と言われています。イメージにアプリケーションや実行環境が内包されていて、イメージがレイヤーとなって構成されています。各ディストリビューションから公式のイメージも配布されています。イメージは独自のものも作成可能で、Docker HubのようなレジストリサービスでGithubのようにイメージの共有ができます。Dockerfileと呼ばれる定義ファイルを作成し、ベースとなるライブラリやOS等のイメージからコンテナイメージをビルドします。dockerさえ入っていれば、どのような環境下でもコンテナで同じアプリケーションを実行することができます。

図4 コンテナのイメージレイヤー

実際にコンテナにてアプリケーション等を実行するとなると可用性やデプロイに関して考慮する必要があります。その際にはコンテナを管理するシステムが必要になります。その代表例がkubernetesです。

kubernetes

コンテナ化したアプリケーションのデプロイ、管理、スケーリングが可能なソフトウェアです。”システムのあるべき姿”を設定ファイルに宣言的に構成を記述することにより例えば、ウェブサーバのコンテナを3つ稼働すると宣言すると1つ落ちた場合にも3つになるように自動的に調整してくれる仕組みです。Kubernetes クラスターを構成することにより、複数のサーバを単一の計算リソースへと抽象化します。ノードによりクラスターを構成し、マスターとなるノードがクラスターのコアとなり、コンテナの実行環境となるワーカーノードを管理します。

図5 kubernetes クラスター

ユースケース

コンテナ型が発揮されるケースとしてマイクロサービスアーキテクチャのシステムに用いられます。マイクロサービスとは、アプリケーションを独立した最小コンポーネントに分割し小さなサービスを作ります。小さなサービスを組み合わせて、一つのサービスを提供します。最小コンポーネントにすることにより、その単位で開発を進められ変更をかける際や障害時に影響範囲を小さくすることができます。それにより開発やテストにかける期間を短縮することができます。

そのため、最小コンポーネントをコンテナとすると理想的なアプリケーションの開発単位となり、コンテナを用いたマイクロサービスアーキテクチャが用いられるようになりました。

※より詳しい仮想化に関しては、【仮想化 入門】仮想化とはを参照ください。

採用情報

採用情報

Categories

  • 相互学習
  • 採用
  • 社員インタビュー
  • 学習&資格取得
  • 技術解説
  • イベント告知
  • 学内説明会&講義
  • 産学連携
  • 就職活動
  • イベントレポート
  • その他
  • 技術ブログ&インタビュー
  • mainpage
  • New Graduates Interviews
  • 中途エンジニア
  • カテゴリーなし
  • ニュースリリース&イベント

Avinton SDGs

SDGsへの貢献

Search

タグ

AIエンジニア AI導入 Apatch AWS Lambda Big Data CKA DevOps istio KiX Notion Python SES Spark UI YOLOv8 アントレプレナー イベント告知 インフラエンジニア キャリアサポート サイバー攻撃 システムエンジニア スタートアップ セキュリティエンジニア ソフトスキル データサイエンティスト ネットワークエンジニア バックエンド フルスタックエンジニア ベテランエンジニア マイクロサービス モーフィング 中瀬幸子、サーバークラスター 中途採用 人材育成 協働パートナー 地域創生 強化学習 技術 持続可能な未来 新卒 新卒採用 田中研之輔 社会貢献 経団連 顔認証
© 2023 Avinton | All Rights Reserved | プライバシーポリシー
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ
  • 日本語
    • English (英語)
Avinton Japan