Ubuntu 26.04 で Docker を使うための基本設定を整理します。ここでの Docker は、Kubernetes ノードの runtime というより、人間が直接コンテナを操作するための CLI、ビルド、検証、Docker Compose 用の環境として扱います。
Kubernetes 用の runtime は前の記事で整理した containerd を中心に考えます。一方で Docker は、手元でイメージを確認したり、Compose で小さなサービスを動かしたり、運用作業の入口として使う場面があります。
書籍
Kubernetes完全ガイド 第2版
Kubernetes の仕組み、リソース、ネットワーク、運用観点を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
Docker と containerd の役割を分ける
Docker を入れると containerd も関係しますが、Kubernetes の CRI runtime として containerd を使う話とは分けて考えます。Docker は Docker daemon と Docker CLI の操作体系を提供します。
- Kubernetes ノードの runtime は containerd を直接使う
- Docker は CLI、build、Compose、検証用途として使う
- Docker daemon の設定は
/etc/docker/daemon.jsonで管理する - proxy や IPv6 bridge を使う場合は daemon 側の設定が必要になる
現在の状態を確認する
まず、Docker 関連パッケージとサービス状態を確認します。
dpkg -l 'docker*' 'containerd*' || true
systemctl --no-pager --full status docker.service || true
docker version 2>/dev/null || true
docker compose version 2>/dev/null || true
docker buildx version 2>/dev/null || trueDocker パッケージをインストールする
Ubuntu のパッケージから Docker、buildx、Compose v2 を導入します。
sudo apt update
sudo apt install -y \
docker.io \
docker-buildx \
docker-compose-v2
docker version
docker compose version
docker buildx versionディストリビューション標準パッケージを使うか、Docker 公式リポジトリを使うかは運用方針によります。ここでは Ubuntu 側のパッケージで構成する前提にします。
管理ユーザーを docker グループへ追加する
一般ユーザーから Docker CLI を使う場合、対象ユーザーを docker グループへ追加します。ただし、docker グループは実質的に root 相当の操作ができるため、付与するユーザーは限定します。
sudo usermod -aG docker "$USER"
id "$USER"
# 反映には再ログインが必要サーバーでは、便利だから全員を docker グループへ入れる、という運用は避けます。Docker socket へアクセスできることは、ホストへの強い権限を持つこととほぼ同じです。
Compose 用の配置先を用意する
Docker Compose で管理するサービスは、配置先を決めておくと整理しやすくなります。ここでは /opt/docker を Compose 用のルートとして使います。
sudo mkdir -p /opt/docker
sudo chown root:root /opt/docker
sudo chmod 0755 /opt/docker
ls -ld /opt/dockerdaemon.json を作成する
Docker daemon の基本設定は /etc/docker/daemon.json に書きます。ここでは data-root、IPv6、default bridge の IPv4 / IPv6 prefix を設定する例を示します。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<'EOF'
{
"data-root": "/var/lib/docker",
"ipv6": true,
"bip": "172.31.0.1/24",
"fixed-cidr-v6": "fd00:docker::/64"
}
EOF
sudo dockerd --validate --config-file /etc/docker/daemon.jsonDocker の default bridge は、ホストや既存ネットワークと衝突しない prefix を選びます。IPv6 を有効にする場合は、fixed-cidr-v6 も明示します。
proxy 環境を設定する場合
外部 registry へ proxy 経由でアクセスする環境では、Docker daemon の systemd drop-in として proxy を設定します。
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/proxy.conf <<'EOF'
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080"
Environment="HTTPS_PROXY=http://proxy.example.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,::1,10.0.0.0/8,fd00::/8"
EOF
sudo systemctl daemon-reloadproxy が不要な環境では、この設定は不要です。private registry、社内 registry、cluster 内ネットワークを使う場合は NO_PROXY の設計が重要になります。
Docker サービスを起動する
設定を配置したら Docker を起動し、自動起動を有効にします。
sudo systemctl enable --now docker.service
sudo systemctl restart docker.service
systemctl --no-pager --full status docker.service動作確認する
Docker CLI、image pull、container 実行、network の状態を確認します。
docker version
docker info
docker network ls
docker run --rm hello-worldIPv6 を有効にしている場合は、Docker network の詳細も確認します。
docker network inspect bridge
ip addr show docker0
ip route
ip -6 routeCompose v2 を確認する
Compose v2 は docker compose サブコマンドとして使います。小さな検証サービスや、単一ホスト上の補助サービスを管理する場合に便利です。
mkdir -p /tmp/docker-compose-test
cd /tmp/docker-compose-test
cat > compose.yaml <<'EOF'
services:
nginx:
image: nginx:stable
ports:
- "8080:80"
EOF
docker compose up -d
docker compose ps
curl -I http://127.0.0.1:8080/
docker compose downKubernetes ノードとの関係
Kubernetes ノードでは、Docker を入れたからといって kubelet が Docker を runtime として使うわけではありません。現在の Kubernetes では、kubelet は CRI 経由で containerd などを使います。Docker は別用途として考えます。
- Kubernetes runtime: containerd
- 手動確認・ビルド・Compose: Docker
- Docker socket 権限は慎重に扱う
- containerd と Docker の設定を混同しない
確認ポイント
docker.serviceが起動しているdaemon.jsonがdockerd --validateを通る- Docker bridge の IPv4 / IPv6 prefix が既存ネットワークと衝突していない
- proxy 環境では image pull が成功する
docker composeとdocker buildxが使える- docker グループに入れるユーザーを限定している
まとめ
Ubuntu 26.04 の Docker 設定では、Docker を Kubernetes runtime としてではなく、CLI、build、Compose、検証のための運用ツールとして位置づけると整理しやすくなります。Kubernetes 側は containerd、手作業や Compose は Docker、という分担にすると、役割が混ざりにくくなります。
次は、Kubernetes ノードの事前準備として、kernel module、sysctl、swap、container runtime、パッケージリポジトリの前提を整理します。
関連記事
- Ubuntu 26.04 containerd の基本設定 – Kubernetes 用 CRI runtime を整える
- Ubuntu 26.04 Kubernetes ノードの事前準備
- Ubuntu 26.04 Kubernetes コントロールプレーン構築
- Ubuntu 26.04 Kubernetes ワーカーノード参加
- Ubuntu 26.04 kubeconfig の基本
- Ubuntu 26.04 MicroK8s の基本
- Ubuntu 26.04 サーバー管理ガイド




