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/