Contents
1. Kong の公式 Docker イメージ取得方法
Kong の公式イメージは Docker Hub に公開されており、最新版タグを指定して docker pull するだけで安全に取得できます。ここでは 「どこで最新バージョンを確認できるか」 と 「取得後にどのように情報を確認すればよいか」 を解説します。
1‑1. 最新版タグの確認方法
公式リポジトリの Tags ページ(https://hub.docker.com/r/kong/kong/tags)にアクセスすると、リリース済みの全バージョンが一覧表示されます。
- 安定版 は latest またはメジャー・マイナーバージョン(例: 3.3.x)のタグが付与されています。
- リリースノートは Kong の公式サイト(https://docs.konghq.com/release-notes/)で確認でき、取得するバージョンの互換性や既知の問題を事前に把握できます。
ポイント:将来のリリース予測は記載せず、必ず公式情報から現在の安定版を参照してください。
1‑2. イメージ取得手順
|
1 2 3 |
# 例: 現在の安定版タグ (2026‑06‑18 時点) を取得 docker pull kong/kong:<stable-tag> |
<stable-tag> の部分は上記 Tags ページで確認したものに置き換えてください。latest タグを利用すると常に最新の安定版が取得できますが、運用環境では明示的なバージョン指定(例: 3.3.2)を推奨します。
1‑3. イメージ情報の確認方法
取得したイメージは次のコマンドで概要を把握できます。具体的なサイズや対応アーキテクチャは環境に依存するため、実行時に確認してください。
|
1 2 3 4 |
docker images --filter=reference='kong/kong:*' | grep -E '<stable-tag|latest>' docker inspect kong/kong:<stable-tag> \ --format='{{json .RepoDigests}} {{json .Architecture}}' |
- サイズ は
docker imagesの出力列に表示されます。 - プラットフォーム(
linux/amd64,linux/arm64等)はdocker inspectのArchitectureフィールドで確認できます。
2. Docker と Docker Compose のインストール要件
Kong をコンテナ上で動作させるには Docker Engine と Docker Compose (v2 系) が必須です。本節では、2026 年時点で推奨されている OS・バージョン情報と、主要プラットフォーム別のインストール手順をまとめます。
2‑1. 推奨 OS とソフトウェアバージョン
| 項目 | 最低要件 (2026‑06‑18) | 補足 |
|---|---|---|
| Docker Engine | 20.10 以上(公式 Docker Desktop または CE/EE) | cgroup v2 完全対応により、Kong のリソース制限が正しく機能します。 |
| Docker Compose | v2.20 以上(CLI プラグイン形式) | docker compose コマンドで統一的に利用可能です。 |
| OS | Linux (Ubuntu 22.04 LTS、Debian 12、RHEL 9 など) / macOS Ventura 13.x / Windows 11 (WSL2 推奨) | 各 OS の公式 Docker ドキュメントを参照してください。 |
最新のインストール手順は次のリンクから取得できます(閲覧日: 2026‑06‑18)。
- Docker Engine: https://docs.docker.com/engine/install/
- Docker Compose: https://docs.docker.com/compose/install/
2‑2. Ubuntu 22.04 におけるインストール例
以下は Ubuntu 系ディストリビューションでの Docker CE と Compose v2 のインストール手順です。スクリプト実行前に sudo 権限が必要です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# Docker Engine のセットアップ sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io # Docker Compose CLI プラグインのインストール(最新版取得) COMPOSE_VER=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep '"tag_name":' | cut -d '"' -f4) sudo curl -SL "https://github.com/docker/compose/releases/download/${COMPOSE_VER}/docker-compose-linux-$(uname -m)" \ -o /usr/local/lib/docker/cli-plugins/docker-compose sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose # インストール確認 docker version && docker compose version |
macOS と Windows は Docker Desktop をインストールすれば、上記要件が自動で満たされます。公式サイトのダウンロードページから最新版を取得してください。
3. DB‑less モードとデータベースモードの比較・選択基準
Kong は DB‑less(宣言的設定のみ) と データベースモード(外部 PostgreSQL / MySQL を使用)の二つの運用形態を提供します。どちらが自分のユースケースに適しているか判断できるよう、特徴・メリット・注意点を整理しました。
3‑1. DB‑less の特徴
DB‑less は KONG_DECLARATIVE_CONFIG に指定した YAML ファイルだけで全設定を完結させます。以下のポイントが主な利点です。
- インフラコスト削減:データベースサーバーが不要なので、リソース使用量と運用負荷が最小化されます。
- GitOps フレンドリー:設定ファイルを Git 管理すれば、CI/CD パイプラインで自動的に反映可能です。
- 高速起動:コンテナ起動時に YAML をロードするだけなので、再デプロイが速いです。
一方、リアルタイムの設定変更 はファイルを書き換えてコンテナを再起動する必要があります。
3‑2. データベースモードとの比較表
| 項目 | DB‑less | データベースモード |
|---|---|---|
| 永続化先 | YAML ファイル (KONG_DECLARATIVE_CONFIG) |
PostgreSQL / MySQL のテーブル |
| スケールアウト | コンテナ数増加で水平拡張可 (設定ファイル共有が前提) | DB クラスタのスケーリングが必要 |
| ランタイム変更 | 再起動で即反映 | Admin API から即時適用可能(再ロード不要) |
| 高可用性 | ファイル同期 (GitOps, rsync 等) に依存 | DB のレプリケーション・フェイルオーバーで実装 |
| 運用コスト | 低(DB 管理不要) | 中〜高(バックアップ、監視が必要) |
| 適したユースケース | 開発/テスト、小規模本番、エッジデプロイ | 大規模トラフィック、マルチリージョン構成 |
3‑3. 選択基準のチェックリスト
- 設定変更頻度が高く、リアルタイムで反映したい → データベースモード。
- インフラコストや運用負荷を最小化したい → DB‑less。
- マイクロサービスのゲートウェイとして短時間に多数デプロイする場合 → DB‑less + GitOps が有効。
- 高可用性とデータ永続性が必須(例: 金融系) → データベースモードで外部 DB の冗長構成を採用。
4. Docker Compose で構築する Kong 環境(ハンズオン)
ここでは DB‑less 構成の Kong を Docker Compose で手軽に立ち上げる手順をご紹介します。設定ファイルの意味や起動後の確認ポイントも合わせて解説します。
4‑1. docker-compose.yml の全体像とポイント
以下は最小構成の例です。コメントで各項目の役割を補足しています。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
version: "3.9" services: kong: image: kong/kong:latest # 安定版タグを使用(必要に応じてバージョン固定可) container_name: kong-gateway environment: KONG_DATABASE: "off" # DB‑less 有効化 KONG_DECLARATIVE_CONFIG: "/etc/kong/kong.yml" KONG_ADMIN_LISTEN: "0.0.0.0:8001" # Admin API を外部公開(本番は制限推奨) KONG_PROXY_ACCESS_LOG: "/dev/stdout" KONG_PROXY_ERROR_LOG: "/dev/stderr" ports: - "8000:8000" # HTTP プロキシ - "8443:8443" # HTTPS プロキシ - "8001:8001" # Admin API volumes: - ./kong.yml:/etc/kong/kong.yml:ro # 宣言的設定ファイルをマウント(読み取り専用) restart: unless-stopped |
KONG_DATABASE=offが DB‑less のスイッチです。KONG_DECLARATIVE_CONFIGにマウントした YAML を指定することで、コンテナ起動時に設定が自動ロードされます。- ログは標準出力へリダイレクトしているため、Docker のログドライバで取得しやすくなります。
4‑2. 起動手順と正常性の確認
- 上記内容を
docker-compose.ymlとしてプロジェクトディレクトリに保存します。 - 同じディレクトリに
kong.yml(宣言的設定)を作成します(例は次節で紹介)。 - コンテナを起動:
bash
docker compose up -d
- 起動状態の確認:
bash
docker ps --filter "name=kong-gateway"
- Admin API が応答すれば成功です。以下の
curlコマンドでヘルスチェックを実行します。
bash
curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8001/
# 200 が返ってくることが期待値
- 宣言的設定が正しく反映されているか、サービス一覧を取得して確認します。
bash
curl http://localhost:8001/services | jq .
4‑3. kong.yml(宣言的設定)のサンプル
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
_format_version: "3.0" services: - name: httpbin-service url: https://httpbin.org routes: - name: httpbin-route paths: - /httpbin plugins: - name: rate-limiting config: minute: 60 policy: local - name: cors config: origins: ["*"] methods: ["GET", "POST", "OPTIONS"] |
このファイルを kong.yml として保存し、Compose 起動後にコンテナを再起動すればプラグインが即座に有効になります。
5. プラグイン有効化・本番向けセキュリティ設定とトラブルシューティング
Kong の基本デプロイが完了したら、実運用で必要になる プラグイン管理、TLS 設定、ログローテーション、そして よくあるエラーへの対処法 をまとめます。
5‑1. プラグインの宣言的有効化
DB‑less 環境では kong.yml にプラグイン情報を記述するだけで自動適用されます。以下は Rate Limiting と CORS の設定例です。
|
1 2 3 4 5 6 7 8 9 10 11 |
plugins: - name: rate-limiting config: minute: 100 # 分間リクエスト上限 policy: local # 各ノードでローカルにカウント - name: cors config: origins: ["https://example.com"] methods: ["GET", "POST"] headers: ["Authorization", "Content-Type"] |
変更後はコンテナを再起動(docker compose restart kong)するだけで反映されます。
5‑2. TLS(HTTPS)設定例
本番環境では Admin API と Proxy の両方に TLS を適用し、通信の暗号化を徹底します。証明書は Let’s Encrypt や社内 PKI で取得したものをホスト側に配置し、ボリュームマウントでコンテナに渡します。
|
1 2 3 4 5 6 7 8 9 10 11 |
services: kong: ... environment: KONG_PROXY_LISTEN: "0.0.0.0:8443 ssl" KONG_ADMIN_LISTEN: "0.0.0.0:8001 ssl" KONG_SSL_CERT: "/etc/kong/ssl/server.crt" KONG_SSL_CERT_KEY: "/etc/kong/ssl/server.key" volumes: - ./ssl:/etc/kong/ssl:ro # server.crt と server.key を格納 |
ポイント
KONG_PROXY_LISTENとKONG_ADMIN_LISTENにsslオプションを付与。- 証明書と鍵は 読み取り専用 (
ro) でマウントし、コンテナ内部からの改ざんリスクを低減。
5‑3. ログローテーション
Kong のログを標準出力に流す構成の場合は Docker デーモン側のロギングドライバが管理します。ファイルへ書き込む場合は、ホスト OS の logrotate を利用するのが一般的です。
|
1 2 3 4 5 6 7 8 9 |
/var/lib/docker/containers/*/*.log { daily rotate 7 compress missingok notifempty copytruncate } |
上記設定を /etc/logrotate.d/docker-containers に保存し、logrotate のデーモンが毎日実行されるようにします。
5‑4. よくあるエラーと対処法
| 症状 | 想定原因 | 推奨対策 |
|---|---|---|
| ポート衝突(8000/8443) | ホスト上で別サービスが同ポートを使用中 | docker compose down 後に lsof -i :8000 等でプロセス確認、必要なら Compose の ports を変更 |
| 502 Bad Gateway が頻発 | コンテナのメモリ制限不足 (--memory) またはバックエンドサービス不在 |
docker compose.yml に mem_limit: "1g" 追加し、バックエンド API の可用性を確認 |
| プラグインが無効 | kong.yml の YAML 構文エラー、または _format_version が欠如 |
yamllint 等で検証し、必ず _format_version: "3.0" を記載 |
| Admin API が応答なし | KONG_ADMIN_LISTEN がローカル限定 (127.0.0.1) |
0.0.0.0:8001 に変更し、ファイアウォール設定で IP 制限を追加 |
| TLS ハンドシェイク失敗 | 証明書と鍵が不一致、またはチェーンが欠落 | openssl x509 -noout -modulus -in server.crt | openssl md5 と openssl rsa -noout -modulus -in server.key | openssl md5 が同一か確認 |
まとめ
- 公式情報を必ず参照し、バージョン番号は「最新安定版」タグで取得する。
- Docker Engine ≥ 20.10 と Compose v2 系があれば、Linux・macOS・Windows のいずれでも Kong を問題なく実行できる。
- DB‑less は軽量・GitOps 向き、データベースモード は大規模・リアルタイム変更に適する。ユースケースに応じて選択を。
- Docker Compose の
docker-compose.ymlと宣言的設定kong.ymlを用意すれば、数分で Kong が稼働し、プラグインや TLS もコードベースで管理できる。 - 本番運用では TLS 設定、ログローテーション、エラー対策 を忘れずに実装し、セキュリティと可観測性を確保する。
次のステップ:本ガイドに沿って試験環境で Kong を構築し、CI/CD パイプラインへ組み込むことで、本番展開へのハードルを下げましょう。