ウェブサイト検索

DebianにDockerをルートフルモードでインストールする


Dockerは、最も人気のあるコンテナ化プラットフォームの一つで、アプリケーションを隔離された環境で実行することができます。デフォルトでは、Dockerはrootfulモードで実行され、コンテナの管理にシステムのルート権限を使用します。この設定は、互換性を重視し、設定の問題を減らしたいほとんどのユーザーに最適です。

このガイドでは、クリーンなDebianシステム上でDockerエンジンとDocker Composeをインストールおよび設定する方法を、rootフルモードを使用して学びます。

なぜRootful Dockerを選ぶのか?

Rootful Docker とは、Docker デーモンが root として実行され、昇格した権限でコンテナを管理することを意味します。

利点:

  • ほとんどの画像やアプリケーションとの完全な互換性
  • より簡単なネットワーキングとポートマッピング
  • システムツールとのより良い統合

欠点:

  • デーモンがルート権限で実行されるため、ルートレスモードよりも安全性が低い

Rootful Docker は、次の場合は問題なく使用できます:

  • あなたはシステム上の唯一のユーザーです。
  • あなたは信頼できるイメージ(例:公式、確認済みのソース)を実行します。
  • Dockerソケットを公開しないでください。
  • 特権コンテナや危険な機能は避けます。

これが、多くの本番システムが依然としてroot権限のあるDockerを使用している理由です。

セキュリティの分離が最優先である場合は、後でルートレスDockerに切り替えることができます。近日中にそのガイドを公開する予定です。

Dockerの要件

Dockerをインストールおよび設定するには、システムが次の最低要件を満たしている必要があります。

  1. 64ビットのLinuxまたはWindowsオペレーティングシステム。
  2. もしLinuxを使用している場合、カーネルのバージョンは3.10以上である必要があります。
  3. sudo 権限を持つユーザーアカウント。
  4. お使いのシステムBIOSでVT(仮想化技術)が有効になっています。[参照: CPUが仮想化技術(VT)をサポートしているか確認する方法]
  5. あなたのシステムはインターネットに接続されている必要があります。

ステップ1. システムを更新する

システムを最新の状態に保つことで、最新のセキュリティパッチを適用できます。

Debian システムを更新するには、次を実行してください:

sudo apt update && sudo apt upgrade -y

ステップ2. 古いDockerバージョンのアンインストール(任意)

注意: もし 新規インストールされたDebianシステム であれば、このステップはスキップできます。

以前にPodman、Docker、またはその他のコンテナランタイムをインストールしている場合は、最初にそれらを削除してください:

sudo apt remove -y docker docker-engine docker.io containerd runc podman
sudo apt autoremove -y

また、残っているリポジトリも削除してください:

sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/sources.list.d/podman.list

ステップ3. 公式Dockerリポジトリを追加する

依存関係をインストールする:

sudo apt install -y ca-certificates curl gnupg lsb-release

Docker の GPG キーを追加します:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Dockerリポジトリを追加してください:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

最新の Debian 13 では、apt のソースを最新化することが推奨されます。

これを行うには、次を実行してください:

sudo apt modernize-sources

パッケージリストを更新する:

sudo apt update

ステップ4. DebianにDocker EngineとDocker Composeをインストールする

Debian 13 に Docker エンジン、Docker Compose、およびすべての必要なコンポーネントをインストールするには、次のコマンドを実行してください:

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Debian 13 trixie に Docker Engine と Docker Compose をインストールする

このコマンドは次をインストールします:

  • Docker エンジン
  • Docker CLI
  • Docker Composeプラグイン

ステップ5. Dockerを有効にして起動する

コマンドを使用してシステム起動時にDockerサービスを有効にする:

sudo systemctl enable docker
sudo systemctl start docker

サービスの状況を確認してください:

sudo systemctl status docker

サンプル出力:

docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-09-02 15:46:43 IST; 7min ago
 Invocation: a87449e79b744dbbb36c7bfd131415fc
TriggeredBy: \u25cf docker.socket
       Docs: https://docs.docker.com
   Main PID: 3427 (dockerd)
      Tasks: 9
     Memory: 21.9M (peak: 23.4M)
        CPU: 337ms
     CGroup: /system.slice/docker.service
             /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
[...]

上の出力でわかるように、dockerサービスはロードされて実行中です。

ステップ6. Dockerのインストールを確認する

Dockerが正しくインストールされて動作しているかを確認するために、hello-worldテストコンテナを実行してください:

sudo docker run hello-world

成功すると、確認メッセージが表示されます。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
17eec7bbc9d7: Pull complete 
Digest: sha256:a0dfb02aac212703bfcb339d77d47ec32c8706ff250850ecc0e19c8737b18567
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/
For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Hello World Docker コンテナを実行する

ステップ7:Dockerのバージョンを確認する

インストールされているDockerのバージョンを確認するには、次のコマンドを実行してください:

sudo docker version

サンプル出力:

Client: Docker Engine - Community
 Version:           28.3.3
 API version:       1.51
 Go version:        go1.24.5
 Git commit:        980b856
 Built:             Fri Jul 25 11:34:13 2025
 OS/Arch:           linux/amd64
 Context:           default
Server: Docker Engine - Community
 Engine:
  Version:          28.3.3
  API version:      1.51 (minimum version 1.24)
  Go version:       go1.24.5
  Git commit:       bea959c
  Built:            Fri Jul 25 11:34:13 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.27
  GitCommit:        05044ec0a9a75232cad458027ca83437aae3f4da
 runc:
  Version:          1.2.5
  GitCommit:        v1.2.5-0-g59923ef
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Docker のバージョンを確認する

ステップ8. sudoなしでDockerを管理する(オプション)

デフォルトでは、Dockerはroot権限を必要とします。

sudoなしでコンテナを管理するには、ユーザーをdockerグループに追加します:

sudo usermod -aG docker $USER
newgrp docker

次に、sudo を使わずに Docker を管理できるか確認してください。

docker ps

権限エラーが発生しなければ、問題なく進めます。

SudoなしでDockerを管理する

ステップ9. Dockerがルートフルモードで実行されているか確認する

実行 :

sudo docker info | grep -i rootless

もし何も表示されない場合、Dockerはroot権限モードで実行されています。

デーモンプロセスを実行しているのは誰か確認してください:

ps aux | grep dockerd

サンプル出力:

root        3427  0.0  1.0 2045556 84480 ?       Ssl  15:46   0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

ここで

  • dockerd プロセスは root として実行されています。したがって、root権限のある Docker であることが確認されます。
  • デーモンはシステムの containerd ソケットを使用しています: /run/containerd/containerd.sock。

ステップ10. Docker Compose を有効にする

Dockerには現在、Composeがプラグインとして含まれています:

docker compose version

最新バージョンが必要な場合は、Docker Compose GitHub公式リリースページからスタンドアロンのComposeバイナリをダウンロードできます:

sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

ステップ11:Dockerの始め方

インストール後、Dockerでコンテナ化されたアプリケーションのデプロイを開始できます。私たちは例付きでDockerの使い方に関する詳細なガイドをまとめました。以下のリンクをご覧ください:

  • Docker入門 | 初心者ガイド

[オプション] ルートレス Docker に移行

Rootlessモードを使用すると、セキュリティ向上のためにroot権限なしでDockerを実行できます。

ルートレスDockerモードのいくつかの重要な利点は次のとおりです:

  • dockerd は通常のユーザーとして実行されます。
  • たとえコンテナが脱出したとしても、ホスト上で持つのはユーザーレベルのアクセスだけです。
  • 特に共有環境や信頼できない環境で、より強力な隔離を提供します。

Rootless Docker は次の場合に考慮する価値があります:

  • あなたはマルチユーザー環境にいます。
  • あなたは信頼されていない画像を使用しています。
  • あなたはより強力な多層防御を望んでいます。
  • あなたは厳格なコンプライアンス/セキュリティポリシーを守る必要があります。

ルートレスDockerが万能薬ではないことにご注意ください。しかし、コンテナの突破が致命的でなくなることは確かです。

もし、特にサードパーティのイメージを試す際に、最大限の隔離と安心感を求めるなら、以下のガイドで説明されているように、rootless Dockerに切り替えてください。

  • Debian と Ubuntu Linux で Rootless Docker に移行する

トラブルシューティング

1. 古いリポジトリの競合

もし誤ってDebianにDocker用のUbuntuリポジトリを追加してしまった場合は、次のようにして削除できます:

sudo rm /etc/apt/sources.list.d/docker.list
sudo apt update

そして、あなたのDebianシステムに正しいリポジトリを追加します。

2. Dockerデーモンが起動しない

Dockerサービスを再起動し、潜在的な手がかりのためにログを確認してください:

sudo systemctl restart docker
sudo journalctl -u docker --no-pager

3. ポート競合

コンテナでマッピングするポートがすでに使用されていないことを確認してください:

sudo ss -tulnp | grep 8000

よくある質問(FAQ)

Q: rootful Dockerとrootless Dockerのどちらを使うべきですか?

A: Rootful: 設定が簡単で互換性が高く、ほとんどのユーザーに推奨されます。
Rootless: より安全ですが、設定がやや難しいです。

Q: 後で rootless Docker に切り替えるにはどうすればいいですか?

A: rootful Docker をアンインストールし、公式の Rootless Docker インストールガイド に従ってください。また、デフォルトで rootless モードで動作する Podman を使用することもできます。

Q: Docker Composeはデフォルトでインストールされていますか?

A: はい、Docker Compose v2 はプラグインとして含まれています。

結論

このステップバイステップガイドでは、最新のDebian 13システムでRootfulモードのDockerエンジンをインストールして設定する方法を学びました。また、Docker Composeのインストール方法といくつかの一般的なトラブルシューティングのヒントについても解説しました。

おすすめ読み物:

  • DockSTARTerでDockerとDocker Composeをセットアップ
  • 実行中のDockerコンテナを自動で更新する方法
  • ctop – Linuxコンテナのためのコマンドライン監視ツール
  • Portainer – Dockerを管理する最も簡単な方法
  • PiCluster – シンプルなウェブベースのDocker管理アプリケーション
  • Dockly - ターミナルからDockerコンテナを管理