【第1回】Dockerとは?初心者にもわかるコンテナ技術の基本とメリット

この記事で分かること
  • Dockerの基本概念と仮想マシン(VM)との根本的な違い
  • Docker Desktop の料金体系(2024年11月改定版)と企業利用の注意点
  • Rocky Linux / Ubuntu / Windows でのインストール手順と動作確認方法

「Dockerって最近よく聞くけど、結局VMと何が違うの?」──VMware ESXi や Hyper-V でサーバーを管理してきたインフラエンジニアの方なら、一度はそう思ったことがあるのではないでしょうか。

この記事では、VM管理者の視点を軸に、Dockerの基礎概念からインストール、料金体系、代替ツールまでを一気通貫で解説します。「連載第1回」として、まずはDockerの全体像をしっかり掴んでいきましょう。

目次

Dockerとは?コンテナ型仮想化を1分で理解する

Docker(ドッカー)とは、アプリケーションを「コンテナ」と呼ばれる軽量な仮想環境に閉じ込めて実行するためのプラットフォームです。2013年にDocker社(旧dotCloud社)がオープンソースとして公開し、現在ではコンテナ技術のデファクトスタンダードとなっています。

コンテナ技術自体はLinuxカーネルの機能(namespace・cgroup)を基盤としており、Docker以前からLXCなどで存在していました。Dockerの功績は、この技術を「誰でも簡単に使える」ツールとして標準化したことです。

仮想マシン(VM)との根本的な違い

VMware ESXi や Hyper-V に慣れている方にとって、最も重要な違いは「ゲストOSの有無」です。

仮想マシンでは、ハイパーバイザーの上にゲストOS(Windows Server、Linuxなど)を丸ごとインストールします。各VMがカーネルを含む完全なOSを持つため、リソース消費が大きくなります。

一方、Dockerコンテナはホストマシンのカーネルを共有します。コンテナにはアプリケーションとその依存ライブラリだけが入り、ゲストOSは存在しません。これが「軽量・高速」の源です。

比較項目仮想マシン(VM)Dockerコンテナ
カーネルゲストOS固有ホストOSと共有
起動時間数十秒〜数分数秒以内
ディスクサイズ数GB〜数十GB数十MB〜数百MB
分離レベル強い(ハードウェアレベル)中程度(プロセスレベル)
代表的なツールVMware ESXi / Hyper-V / KVMDocker Engine / Podman

Dockerの主要コンポーネント(Engine・Hub・Compose)

Dockerのエコシステムは複数のコンポーネントで構成されています。まずは以下の3つを押さえておきましょう。

  • Docker Engine:コンテナの作成・実行を担うコアランタイム。Linux上で直接動作します。
  • Docker Hub:コンテナイメージの公開レジストリ。nginxやMySQLなど公式イメージが多数公開されています。
  • Docker Compose:複数コンテナの構成をYAMLファイルで定義し、一括管理するツール。Webサーバー+DB+キャッシュのような構成を1コマンドで起動できます。

VM管理者がDockerを使い始めて最初に戸惑うこと

VMware や Hyper-V で仮想マシンを管理してきた方がDockerに触れると、思想の違いに戸惑うポイントがいくつかあります。最初に混乱しやすい3つの点を紹介します。

「1コンテナ1プロセス」の考え方

VMでは1つの仮想マシン上にWebサーバー、DBサーバー、監視エージェントなどを同居させることが当たり前です。しかしDockerでは「1コンテナに1つのプロセス(役割)」が原則です。

Webサーバーはnginxコンテナ、データベースはMySQLコンテナ、というように役割ごとにコンテナを分けます。複数コンテナの連携にはDocker Composeを使います。

VMでの「1台のサーバーに色々入れる」発想を捨てて、「レゴブロックのように機能を組み合わせる」発想に切り替えることが、Docker理解の第一歩です。

コンテナを削除するとデータが消える

VMでは仮想ディスク(.vmdk や .vhdx)にデータが永続化されるため、VMを停止・再起動してもデータは残ります。

一方、Dockerコンテナは「使い捨て」が前提です。コンテナを削除すると、コンテナ内のファイル変更はすべて失われます。永続化が必要なデータは「ボリューム(Volume)」や「バインドマウント」という仕組みでホスト側に保存する必要があります。

Dockerを始めたばかりの頃に最も多い失敗が「コンテナを消したらDBのデータが全部消えた」というものです。必ずボリュームの設計を先に行いましょう。

ネットワーク設計はVMと別物

VMware であれば vSwitch や VLAN でネットワークを設計しますが、Dockerのネットワークはソフトウェア的に抽象化されています。

デフォルトでは「bridge」ネットワークが作成され、コンテナ同士はこのブリッジ経由で通信します。Docker Composeでサービスを定義すると、サービス名でDNS解決が可能になるため、IPアドレスを意識する場面はVMより少なくなります。

Dockerのネットワークモードには bridge / host / none / overlay(Swarm用)などがあります。詳細は連載第3回以降で解説予定です。

Dockerを使う4つのメリット

環境の再現性:「自分のPCでは動く」を終わりにする

開発環境と本番環境の差異は、システム障害の原因として非常に多いものです。Dockerイメージにはアプリケーション、ライブラリ、設定ファイルがすべてパッケージされるため、「どの環境でも同じように動く」ことが保証されます。

VMでも仮想マシンテンプレートで環境を統一できますが、テンプレートのサイズは数GB〜数十GBになります。Dockerイメージは数十MB〜数百MBと軽量で、配布も容易です。

軽量・高速起動:VMの数分からコンテナの数秒へ

VMの起動にはOSのブートプロセスが必要で、早くても30秒〜数分かかります。Dockerコンテナはプロセスの起動に過ぎないため、通常は1〜3秒で起動が完了します。

この高速性は、CI/CDパイプラインでのテスト実行や、オートスケーリングの即応性に直結します。

ポータビリティ:開発→テスト→本番を同一イメージで

一度ビルドしたDockerイメージは、開発者のPC、テストサーバー、本番のKubernetesクラスタのどこでも同じように実行できます。「開発環境では動いたのに本番でエラーになる」というリスクを大幅に減らせます。

インフラのコード化:Dockerfileで構築手順を記述・共有

VMの構築手順は、手順書(Excel等)や構成管理ツール(Ansible等)で管理することが一般的です。Dockerでは「Dockerfile」というテキストファイルに構築手順を記述します。

FROM rockylinux:9
RUN dnf install -y httpd
COPY ./html/ /var/www/html/
EXPOSE 80
CMD ["httpd", "-D", "FOREGROUND"]

この5行だけで「Rocky Linux 9にApacheをインストールし、HTMLファイルを配置してポート80で公開する」という環境が定義できます。Gitで管理すれば変更履歴の追跡も容易です。

Docker Desktop の料金と企業利用の注意点(2024年改定版)

Docker Desktop は、WindowsやmacOSでDockerを手軽に使えるGUIアプリケーションです。個人利用や学習目的では非常に便利ですが、企業利用には注意が必要です。

無料で使える条件

Docker Desktop は以下の条件をすべて満たす場合に無料(Docker Personal プラン)で利用できます。

  • 個人利用・学習目的・教育目的
  • 非商用のオープンソースプロジェクト
  • 従業員250人未満かつ年間収益1,000万ドル(約15億円)未満の企業

従業員250人以上または年間収益1,000万ドル以上の企業でDocker Desktopを使う場合、有料サブスクリプション(Pro / Team / Business)の契約が必須です。条件はDocker社のポリシー変更によって変わる場合があるため、最新のライセンス条項を必ずご確認ください。

有料プランの内容(2024年11月改定後)

2024年11月のプラン改定で、Dockerの有料プランは値上げと機能強化が行われました。2024年12月10日以降の新規契約、既存ユーザーは次回更新日から新料金が適用されています。

プラン年払い(月換算)月払い主な特徴
Personal無料無料Docker Hub プル上限:200回/6時間(認証済み)、プライベートリポジトリ1つ
Pro$9/月$11/月プライベートリポジトリ無制限、Build Cloud 200分/月、2営業日サポート
Team$15/ユーザー/月$16/ユーザー/月RBAC・監査ログ、Build Cloud 500分/月、最大100ユーザー
Business$24/ユーザー/月$24/ユーザー/月SSO/SCIM、Build Cloud 1,500分/月、翌営業日サポート、請求書払い対応(年払い割引なし)

改定前と比較すると、Proは$5→$9(年払い・80%増)、Teamは$9→$15(年払い・約67%増)と大幅な値上げです。一方でDocker Build Cloudの無料枠(Pro:200分/月、Team:500分/月、Business:1,500分/月)が付与されるなど、バンドルされるサービスは拡充されています。Businessプランのみ年払い・月払いで料金差がありません。

Linuxサーバーで利用する場合は、Docker Desktop は不要です。Docker Engine(無料・OSS)を直接インストールすれば、ライセンス料金の心配はありません。Docker Desktopの有料化はあくまでWindows / macOSのGUIアプリケーションに関する話です。

企業向け代替ツール比較(Podman / Rancher Desktop / OrbStack)

Docker Desktop の有料化を受けて、代替ツールへの関心が高まっています。主要な選択肢を比較します。

ツール対応OS費用Docker互換性特徴
Podman DesktopWin / Mac / Linux無料(OSS)高い(Docker CLI互換)デーモンレス・ルートレス対応。Red Hat/OpenShift環境との親和性が高い
Rancher DesktopWin / Mac / Linux無料(OSS)高い(dockerd選択可)ローカルKubernetes(k3s)を統合。マルチOS対応チーム向き
OrbStackmacOSのみ個人無料 / 商用有料非常に高い起動が極めて高速。メモリ消費が少ない。macOS限定

インストールと動作確認

ここからは実際にDockerをインストールしてみましょう。本記事ではRocky Linux 9、Ubuntu 24.04、Windows(Docker Desktop)の3パターンを紹介します。

Linux(Rocky Linux 9)へのインストール

Rocky Linux 9(AlmaLinux 9でも同様の手順)にDocker Engineをインストールする方法です。

STEP
前提パッケージのインストール
sudo dnf update -y
sudo dnf install -y dnf-utils
STEP
Docker公式リポジトリの追加
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

Rocky Linux 8 / 9 はともにRHELバイナリ互換のため、RHEL用のリポジトリがそのまま利用できます。CentOSリポジトリはDocker公式サポートが終了しているため使用しないでください。

STEP
競合パッケージの削除

Rocky Linux 9にはPodmanやBuildahがプリインストールされている場合があります。Docker Engineと競合するため、先に削除します。

sudo dnf remove -y podman buildah
STEP
Docker Engineのインストール

以下のパッケージをインストールします。

  • docker-ce:Docker Engineの本体
  • docker-ce-cli:dockerコマンドのCLIツール
  • containerd.io:コンテナランタイム(Docker Engineの土台となるソフトウェア)
  • docker-buildx-plugin:マルチプラットフォームイメージのビルド拡張機能
  • docker-compose-plugindocker composeコマンドを使えるようにするプラグイン
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
STEP
起動と自動起動の設定
sudo systemctl start docker
sudo systemctl enable docker
STEP
一般ユーザーで docker コマンドを使えるようにする
sudo usermod -aG docker $USER
newgrp docker

dockerグループへの追加後、新しいシェルを開くか再ログインが必要です。newgrp dockerコマンドで現在のセッションにグループを即時反映できます。

Linux(Ubuntu 24.04)へのインストール

Ubuntu 24.04 LTS の場合は以下の手順です。

# 前提パッケージのインストール
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

# Docker公式GPGキーの追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# リポジトリの追加
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker Engineのインストール
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 一般ユーザーで使えるようにする
sudo usermod -aG docker $USER

Windowsへのインストール(Docker Desktop)

Windows 10/11 Pro 以上であれば、Docker Desktop を使うのが最も手軽です。

STEP
WSL 2(Windows Subsystem for Linux 2)の有効化

WSL 2とはWindows上でLinux環境を動かす仕組みです。PowerShellを管理者権限で開き、以下を実行します。

wsl --install

再起動後、WSL 2 が有効になります。

STEP
Docker Desktop のダウンロードとインストール

Docker公式サイト(https://www.docker.com/products/docker-desktop/)からインストーラーをダウンロードし、画面の指示に従ってインストールします。

STEP
バックエンドの選択

初回起動時に「WSL 2 バックエンド」を使用するか聞かれます。特別な理由がなければWSL 2を選択してください。Hyper-VバックエンドよりWSL 2のほうが軽量かつ高速です。

動作確認コマンド

どのOSでもインストール後の動作確認は同じコマンドです。

# Dockerのバージョン確認
docker --version

# Docker Engineの詳細情報
docker info

# テストコンテナの実行(Linux では sudo が不要になっているか確認)
docker run hello-world

docker run hello-world を実行すると、Docker Hub から hello-world イメージが自動ダウンロードされ、以下のようなメッセージが表示されます。

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

このメッセージが表示されれば、Docker のインストールは正常に完了しています。

基礎用語を整理する

Dockerを学ぶ上で避けて通れない基礎用語を、VM管理者に馴染みのある例えと一緒に整理します。

Docker用語VMでの例え説明
イメージ(Image)VMテンプレート / ISOコンテナの設計図。読み取り専用で、レイヤー構造を持つ
コンテナ(Container)起動中のVMイメージから生成された実行中のインスタンス。停止・削除が自由
ボリューム(Volume)外付けディスク / データストアコンテナのライフサイクルに依存しない永続データ領域
Dockerfile構築手順書 / Kickstartイメージの作り方をテキストで記述するファイル
Docker Compose複数VMの一括デプロイスクリプト複数コンテナの構成をYAMLで定義し一括管理するツール
レジストリ(Registry)ISOイメージ置き場イメージの保管・配布場所。Docker Hubが代表的

特に重要なのは「イメージ」と「コンテナ」の関係です。イメージはクラスの定義、コンテナはそのインスタンスと捉えると理解しやすいでしょう。1つのイメージから何個でもコンテナを起動できます。

まとめ:インフラエンジニアがDockerを学ぶべき理由

  • DockerはゲストOSを持たない軽量なコンテナ型仮想化であり、VMとは設計思想が異なる
  • VM管理者が戸惑いやすいのは「1コンテナ1プロセス」「データの揮発性」「ネットワークの抽象化」の3点
  • 環境の再現性・高速起動・ポータビリティ・インフラのコード化が4大メリット
  • Docker Desktop は大企業(250人以上 or 年収益$10M以上)の商用利用は有料。Linux上のDocker Engineは無料
  • 代替ツールとしてPodman Desktop / Rancher Desktop / OrbStack がある

クラウドネイティブな開発・運用が主流となりつつある現在、Dockerの知識はインフラエンジニアにとって必須スキルになっています。VMwareで培った「リソース管理」「ネットワーク設計」「セキュリティ対策」の知識は、コンテナ環境でも十分に活かせます。

VMとDockerは「対立するもの」ではなく「使い分けるもの」です。それぞれの特性を理解し、適材適所で選択できるエンジニアが今後ますます求められます。

次のステップ(第2回予告)

第2回では「Dockerイメージとコンテナの操作」を取り上げます。docker run / docker build / docker compose up など、日常的に使うコマンドをハンズオン形式で解説します。

DockerとVMはどちらを使うべきですか?

用途によります。マイクロサービスやCI/CDにはDockerが適しており、WindowsアプリケーションやカーネルレベルのOS検証にはVMが適しています。多くの現場では両方を併用しています。

Docker Desktop の料金を回避する方法はありますか?

Linuxサーバー上でDocker Engineを使う場合は完全無料です。WindowsやmacOSの場合はPodman DesktopやRancher Desktopなどの無料代替ツールを検討してください。

Rocky Linux 9でDockerをインストールする際、Podmanとの競合は大丈夫ですか?

Rocky Linux 9にはPodmanがプリインストールされている場合があります。本記事ではDocker Engineのインストール前にPodman/Buildahを先に削除する手順を紹介しています。Podmanをそのまま使い続けたい場合は、Docker Engineのインストールを省略してPodmanを活用する選択肢もあります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次