Ubuntu 26.04 で Docker を使う場合、Docker Engine だけでなく、Compose plugin、データ保存先、IPv6 bridge、proxy、docker group の扱いを合わせて決めておくと、コンテナ運用の前提がそろいます。
この記事では、Ubuntu package の docker.io、docker-buildx、docker-compose-v2 を使い、/etc/docker/daemon.json と systemd drop-in で Docker daemon を構成する基本をまとめます。
- Docker Engine / Buildx / Compose v2 の導入
- 管理ユーザーの
dockergroup 追加 /etc/docker/daemon.jsonの設定- IPv6 bridge と
fixed-cidr-v6 - systemd drop-in による proxy 設定
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| packages | docker.io、docker-buildx、docker-compose-v2 |
| Compose root | /opt/docker |
| daemon config | /etc/docker/daemon.json |
| proxy drop-in | /etc/systemd/system/docker.service.d/proxy.conf |
Docker と containerd を分けて考える
Docker Engine はアプリケーションコンテナや Compose 運用で便利です。一方、Kubernetes ノードの CRI runtime としては containerd を直接構成する場合があります。両者を混同せず、用途を分けて設計します。
- Docker は Compose や単体コンテナ運用で使う
- Kubernetes 用 runtime は containerd 側で確認する
- Docker daemon の network と proxy を明示する
- docker group の権限を理解して付与する
Docker packages をインストールする
Ubuntu package として Docker Engine、Buildx、Compose v2 を導入します。
sudo apt update
sudo apt install -y docker.io docker-buildx docker-compose-v2
docker --version
docker buildx version
docker compose versiondocker group を扱う
docker group に入ったユーザーは Docker daemon を通じて強い権限を持ちます。管理ユーザーだけに絞って追加し、反映には再ログインが必要です。
sudo usermod -aG docker myadmin
id myadmin
getent group dockerCompose root を作成する
Compose の定義やデータを置く場所を決めます。ここでは /opt/docker を root として使います。
sudo install -d -o root -g root -m 0755 /opt/docker
ls -ld /opt/dockerdaemon.json を構成する
/etc/docker/daemon.json では、data root、IPv6、Docker bridge の IPv4 / IPv6 CIDR を指定します。IPv6 を有効にする場合は fixed-cidr-v6 を必ず設計します。
sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
{
"data-root": "/var/lib/docker",
"ipv6": true,
"bip": "172.31.0.1/24",
"fixed-cidr-v6": "fd00:31::/64"
}
EOF
sudo chown root:root /etc/docker/daemon.json
sudo chmod 0644 /etc/docker/daemon.jsondaemon.json を検証する
Docker daemon の設定は、反映前に dockerd --validate で確認します。
sudo dockerd --validate --config-file /etc/docker/daemon.json
sudo systemctl restart docker.service
systemctl status docker.service --no-pagerproxy を systemd drop-in で設定する
proxy 環境で image pull を行う場合は、Docker daemon に proxy 変数を渡します。内部 registry、localhost、内部ドメインは NO_PROXY に入れます。
sudo install -d -o root -g root -m 0755 /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/proxy.conf >/dev/null <<'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,.example.com,registry.example.com"
EOF
sudo chown root:root /etc/systemd/system/docker.service.d/proxy.conf
sudo chmod 0644 /etc/systemd/system/docker.service.d/proxy.confsystemd に反映する
drop-in を変更した場合は daemon reload の後に Docker を再起動します。
sudo systemctl daemon-reload
sudo systemctl restart docker.service
systemctl show docker.service --property=Environment
systemctl status docker.service --no-pagerDocker の動作を確認する
daemon、network、Compose plugin、image pull の確認をします。
docker info
docker network inspect bridge
docker run --rm hello-world
docker compose versionIPv6 bridge を確認する
IPv6 を有効にした場合は、Docker bridge の IPv6 subnet と container 側の address を確認します。
docker network inspect bridge | grep -A8 IPv6
docker run --rm busybox ip -6 address
docker run --rm busybox ip -6 route確認ポイント
docker.io、docker-buildx、docker-compose-v2を導入している- 管理ユーザーだけを
dockergroup に入れている /opt/dockerを Compose root として用意している/etc/docker/daemon.jsonをdockerd --validateで確認している- IPv6 有効時に
fixed-cidr-v6を指定している - proxy 環境では systemd drop-in を設定している
まとめ
Ubuntu 26.04 の Docker 基本設定では、Docker Engine、Buildx、Compose v2 を導入し、Compose root、daemon config、proxy drop-in、IPv6 bridge を明示して構成します。
特に docker group は強い権限を持つため、追加するユーザーを絞ります。また、Kubernetes 用 runtime としての containerd とは用途を分け、Docker は Compose や単体コンテナ運用の基盤として確認すると混乱しにくくなります。

