手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Docker の基本設定 – CLI / Compose / IPv6 / proxy を整える

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 || true

Docker パッケージをインストールする

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/docker

daemon.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.json

Docker の 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-reload

proxy が不要な環境では、この設定は不要です。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-world

IPv6 を有効にしている場合は、Docker network の詳細も確認します。

docker network inspect bridge
ip addr show docker0
ip route
ip -6 route

Compose 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 down

Kubernetes ノードとの関係

Kubernetes ノードでは、Docker を入れたからといって kubelet が Docker を runtime として使うわけではありません。現在の Kubernetes では、kubelet は CRI 経由で containerd などを使います。Docker は別用途として考えます。

  • Kubernetes runtime: containerd
  • 手動確認・ビルド・Compose: Docker
  • Docker socket 権限は慎重に扱う
  • containerd と Docker の設定を混同しない

確認ポイント

  • docker.service が起動している
  • daemon.jsondockerd --validate を通る
  • Docker bridge の IPv4 / IPv6 prefix が既存ネットワークと衝突していない
  • proxy 環境では image pull が成功する
  • docker composedocker 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 Docker の基本設定 – CLI / Compose / IPv6 / proxy を整える

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る