一口に「コンテナ」と言っても、分類は意外に複雑です。誕生してから類似する技術の種類が増えているからです。本記事では、何がどう違うか理解しやすいようにまとめています。ぜひ基本をあらためて理解し用途に合ったものを選びましょう。
目次
種類と違いの前にコンテナそのものを理解する!
コンテナの種類と違いを理解するのは、なかなかできることではありません。出来上がったひとつの製品ではなく、課題を解決する考え方や分野だからです。その実現方法として複数開発され、それぞれが別々に発展してきました。「コンテナ」を技術として知ることの大切さがここにあると考えます。
技術としてコンテナを考えることについて、カゴヤのサーバー研究室では以下の記事でまとめています。
日常生活でコンテナは知っていても、IT業界のそれとどう関連するのかわからない方に向けに、この記事であらためて解説しています。もともとコンテナが使われてきたのは貿易業界で、そこでの意味もご紹介しています。これで、なぜコンテナが「技術」として大切かご理解いただけると考えています。キーワードは「整理整頓」と「効率化」です。 貿易業界の「コンテナ」とは? まずは貿易業界で使われている「コンテナ」についてご…
そもそもコンテナとは?
何かの入れ物を指す「コンテナ」は突然現れたわけではありません。「仮想化」がその原型の一つです。「仮想化」とは物理的な1台のサーバー機器を、あたかも複数の機器があるように(仮想的に)分割し、利用できるようにした技術です。管理の省力化や有限な資源の有効活用などを目的に、仮想化をさらに改善し進化させた結果が「コンテナ」と言えるでしょう。
仮想化についてカゴヤのサーバー研究室では、以下の記事で詳しく解説しています。
【超入門】「仮想マシン」「ゲストOS」「ホストOS」を図解でわかりやすく解説します
「仮想化」について調べると、「仮想マシン」や「ゲストOS」、「ホストOS」など多くの専門用語も一緒に出てきます。そのため余計にわからなくなることはありませんか。この記事ではそれらの用語をあらためて図解し、わかりやすく解説しています。「仮想化」技術にはいくつかの種類があり、進化しています。より新しく利用しやすい「HCI」という新しいサービスについても紹介しています。 仮想化とは?仮想マシンがなぜ必要…
いろいろな種類がある!
最初から、コンテナの種類や違いを個別に完璧に理解することは確かに理想です。まずは概要を把握することから始めることをおすすめします。
コンテナ自体は課題を解決する考え方や分野のため、さまざまな実現方法が開発されてきました。何をどこで使うかが、種類と違いを理解する際のポイントと考えます。「何を」は技術名で、例えば「Docker」や類似する技術です。一方「どこで」とは、どのOSで利用するかです。これらは世に出たらずっとそのままではありません。他の技術との組み合わさり、改良されることもあります。この先も次々と新しい「入れ物」が誕生したり、全く別の技術に進化することでしょう。
【コンテナの種類と違い(1)】発展段階での違い
Dockerと仮想化
Docker | 仮想化 | |
---|---|---|
概要 | ・アプリケーションが利用できる環境をはやく、独立して安全に用意できる ・ゲストOSが不要のため軽量 | 独立した仮想的な機器を作成するため、より高性能なサーバー機器が必要 |
基本的な構造 | ホストOS – Docker Engine – アプリケーション | ホストOS – ハイパーバイザー – 仮想マシン(ゲストOS・アプリケーション) |
搭載できるOS | Linux、macOS、Windows(注1) | Linux、macOS、Windows |
環境を構築する時間 | 比較的短い | 比較的長い |
画面操作がGUIで可能か | ○ | ○ |
メリット | アプリケーションの独立性が高まり比較的安全 | 従来の知識である程度操作ができる |
デメリット | 最初に専門知識の習得が必要 | ・環境構築に時間がかかる ・比較的動作が遅い |
備考 | ・Docker コンテナと呼ばれることもある(注2) 管理方法には「Kubernetes」がある(注3) |
(注1)Docker Desktop
https://www.docker.com/products/docker-desktop/
(注2)Docker 概要
https://docs.docker.jp/engine/understanding-docker.html
(注3)Kubernetesとは?仕組みと構造をわかりやすく解説(カゴヤのサーバー研究室) https://www.kagoya.jp/howto/cloud/container/kubernetes/
アプリケーションコンテナとシステムコンテナ
アプリケーションコンテナ | システムコンテナ | |
---|---|---|
概要 | アプリケーションを独立して使用できる | アプリケーションコンテナと仮想化の両方の特徴をもつ |
代表的な名称 | Dockerなど | LXC(Linuxコンテナ) |
備考 | 参考サイト Container and virtualization tools |
【コンテナの種類と違い(2)】 搭載するOSでの違い
コンテナはふだん使用しているOSで導入し利用可能です。各公式ページなどで公開されている情報にもとづいてインストールします。
いろいろなOSでDocker Desktopを動かす!
公式ページによれば、「Docker Desktop」をインストールすることで、「コンテナ化したアプリケーションとマイクロサービスの構築と共有が簡単」になります。さらにKubernetes、 Docker EngineやDocker Composeなどのツールも利用できるため、管理がはかどります。
これまではMac用とWindows用が公開されてきました。公式サイトによれば、2022年5月からLinuxでも動かすことができるようになりました。
(注)Docker Desktop on Linuxの利用には、Gnomeまたは KDEのデスクトップ環境が整っていることが前提です。詳細はこちらの公式ページをご確認ください。
それぞれの導入方法は、以下の公式ページで解説されています。
Docker Desktop for Mac | https://docs.docker.jp/docker-for-mac/install.html |
Docker Desktop for Windows | https://docs.docker.jp/docker-for-windows/install.html |
Docker Desktop for Linux | https://docs.docker.com/desktop/linux/ |
LXCとLXD(Linux)
LinuxではLXCやLXDなどのコンテナ技術が使われています。2008年頃に登場したLXCは、Linux Containers(Linuxコンテナ)の略です。このLXCに、さらに利用しやすくする機能が付け加えられました。それが2015年に生まれたLXDです。
【参考サイト】
What is LXD?
https://linuxcontainers.org/lxd/introduction/
Windowsで動かすWSL2
Windowsでは、最近「WSL」というLinuxを動かす機能が注目されています。「WSL」とはWindows Subsystem for Linuxの略で、2022年5月時点で最新版は「WSL2」です。Windows 11が発表されてからはより使いやすくなっています。
カゴヤのサーバー研究室では、以下の記事でWSL2について詳しく解説しています。
WindowsでWSL2を使って「完全なLinux」環境を作ろう!
WSLとは、Windows上でLinuxを動作させるための実行環境です。新しいバージョンである「WSL2」ではWindows上で「完全なLinux」が動かせるようになり、できることが大幅に増えました。この記事ではWSL(WSL2)とは何かや、WSL1・WSL2の違い、WSL2を使ってLinux環境を構築する方法について解説します。 Windows上でLinuxを動かせる「WSL」とは? 「WSL(…
また以下の記事にて、「WSL1」ではできなかったDockerの導入を、「WSL2」で実現する方法を説明しています。参考にしてみてはいかがでしょうか。
Web開発の現場をはじめとして、Dockerが使われる機会が増えています。手軽に使えるDockerのテスト環境・開発環境を調達したい、と考えている方は多いでしょう。 Windowsでは「WSL2」の登場により、Docker環境を簡単に確保できるようになりました。この記事では、WSL2とは何かといった概要と、Windows+WSL2でDocker環境を用意する方法について紹介します。 ※KAGOYA…
【コンテナの種類と違い(3)】 Docker互換の事例
その代表が「Podman」というオープンソースのプロジェクトです。Red Hat社が中心となって開発を進めています。Docker互換のコンテナエンジンといわれ、Dockerの代替なる可能性があると考えます。標準規格のもとでは、コマンドのdockerをpodmanに変えることでほぼ動作するためです。
XaaSとしてコンテナを理解する!
XaaS(注1)の一つとして、CaaS(カース、Containers as a Service)という用語もあります。コンテナの技術でクラウドサービスを提供する方法です。
CaaSの位置づけは、IaaS(Infrastructure as a Service)とPaaS(Platform as a Service)の間と言われています。ただしコンテナ技術で動いていることから、従来の仮想化を念頭にした分類方法では、必ずしも適当ではない可能性があります。(注2)
(注1)XaaS(X as a Service)で「X」の部分にアルファベットを入れることにより、さまざまなクラウドサービスを表現する際に使われています。「IaaS」「PaaS」「SaaS」などが有名です。
(注2)【参考サイト】Containers as a Service (CaaS)
https://www.techtarget.com/searchitoperations/definition/Containers-as-a-Service-CaaS
まとめ
種類と違いが複雑になってきたコンテナは、今後ますます発展していくでしょう。決して「Linux」- 「コンテナ」 – 「Docker」のような、1つの組み合わせのみで存在しているわけではありません。まずは基本的な種類や違い把握することが、利用目的に合ったものを選ぶ近道と考えます。
コンテナ管理をこれから始めたいお客様に最適な、RancherでKubernetesを簡単に管理できるコンテナサービスと、サーバースペック 95パターン+ディスク容量 10パターンから選択できるクラウドサーバーを提供する国産クラウドプラットフォームです。