メインコンテンツまでスキップ

Docker の Debian へのインストール

警告: apt コマンドを使用して直接 Docker をインストールすることはお勧めできません。必ず最初に Docker APT リポジトリを設定してから行ってください。

前提条件

システム要件

Docker は以下のバージョンの Debian オペレーティングシステムをサポートしています:

  • Debian Bookworm 12 (stable)
  • Debian Bullseye 11 (oldstable)

古いバージョンのアンインストール

Docker Engine をインストールする前に、競合するパッケージをアンインストールする必要があります。

ディストリビューション管理者は、自身のリポジトリに非公式の Docker パッケージを提供しています。公式バージョンの Docker Engine をインストールする前に、これらの非公式パッケージをアンインストールする必要があります。

アンインストールが必要な非公式パッケージは以下の通りです:

  • docker.io
  • docker-compose
  • docker-doc
  • podman-docker

さらに、Docker Engine は containerd と runc に依存しています。Docker Engine はこれらの依存関係を containerd.io というひとつのバンドルとしてまとめています。以前に containerd または runc をインストールしていた場合は、Docker Engine に同梱されているバージョンとの競合を避けるためにアンインストールしてください。

以前のバージョンの Docker は docker または docker-engine と呼ばれていました。そのようなバージョンがある場合はアンインストールしてください。

$ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

/var/lib/docker/ に保存されているイメージ、コンテナ、ボリューム、ネットワークは Docker のアンインストール時に自動的に削除されません。きれいな状態からインストールを行いたい場合は、既存のデータを削除することをお勧めします。 すべてのイメージ、コンテナ、ボリュームを削除するには:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

APT リポジトリを使ったインストール

新しいホストマシンで初めて Docker Engine をインストールする前に、Docker の apt リポジトリを設定する必要があります。その後、リポジトリから Docker をインストールおよび更新できます。

# Docker の公式 GPG キーを追加する:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# リポジトリを Apt のソースに追加する:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

一部の Debian ベースの Linux ディストリビューションでは、$(lsb_release -cs) が Debian のバージョンコードネームを返さない場合があります (例: Kali Linux, BunsenLabs Linuxなど)。

Docker のインストール

最新の Docker

apt パッケージインデックスを更新し、docker-ce パッケージをインストールします:

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

特定バージョンの Docker

# 利用可能なバージョンを一覧表示する:
apt-cache madison docker-ce | awk '{ print $3 }'

5:25.0.0-1~debian.12~bookworm
5:24.0.7-1~debian.12~bookworm
...

目的のバージョンを選択してインストールします:

VERSION_STRING=5:25.0.0-1~debian.12~bookworm
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

Docker の検証

hello-world イメージを実行して、インストールが正しく行われたことを確認します:

sudo docker run hello-world

このコマンドはテストイメージをダウンロードし、コンテナ内で実行します。コンテナが実行されると、確認メッセージが表示されて終了します。

便利なスクリプトを使ったインストール

テストまたは開発環境では、Docker は Debian システムでインストールプロセスを簡素化する便利なスクリプトを提供しています。--mirror オプションを使用すると、リージョナルミラーからインストールすることもできます:

テスト版の Docker をインストールする場合は、test.docker.com からスクリプトを取得します

# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror XXXX

このコマンドを実行すると、スクリプトが自動的にすべての準備を行い、システムに安定版の Docker をインストールします。

Docker の起動

$ sudo systemctl enable docker
$ sudo systemctl start docker

Docker ユーザグループの作成

デフォルトでは、docker コマンドは Unix ソケット を使用して Docker エンジンと通信します。root ユーザと docker グループのユーザのみが Docker エンジンの Unix ソケットにアクセスできます。セキュリティ上の理由から、Linux システムで root ユーザを使用することは一般に推奨されません。そのため、docker を使用する必要があるユーザを docker ユーザグループに追加するのが良い方法です。

docker グループを作成します:

$ sudo groupadd docker

現在のユーザを docker グループに追加します:

$ sudo usermod -aG docker $USER

ログアウトしてから再度ログインし、変更を反映させます。その後、Docker が正しくインストールされているかテストします。

Docker インストールのテスト

$ docker run --rm hello-world

Unable to find image 'hello-world:
latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
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/

上記の出力が表示されれば、インストールは成功です。

参考資料