メインコンテンツへスキップ
利便性のため、Docker Hub のガイドを以下に再掲します。利用可能な Docker イメージでは、 公式の ClickHouse deb パッケージが使用されています。 Docker pull コマンド:

バージョン

  • latest タグは、最新の stable ブランチにおける最新リリースを指します。
  • 22.2 のようなブランチタグは、対応するブランチの最新リリースを指します。
  • 22.2.322.2.3.5 のようなフルバージョンのタグは、対応するリリースを指します。
  • head タグは、デフォルトブランチの最新コミットからビルドされます。
  • 各タグには、省略可能な -alpine 接尾辞があり、alpine ベースでビルドされていることを示します。

互換性

  • amd64 イメージでは、SSE3 命令のサポートが必要です。 2005 年以降のほぼすべての x86 CPU は SSE3 をサポートしています。
  • arm64 イメージでは、ARMv8.2-A アーキテクチャのサポートに加えて、 Load-Acquire RCpc レジスタも必要です。このレジスタは ARMv8.2-A ではオプションですが、 ARMv8.3-A では必須です。Graviton >=2、Azure、GCP のインスタンスでサポートされています。 サポート対象外のデバイスの例としては、Raspberry Pi 4 (ARMv8.0-A) と Jetson AGX Xavier/Orin (ARMv8.2-A) があります。
  • ClickHouse 24.11 以降、Ubuntu イメージはベースイメージとして ubuntu:22.04 を使用するようになりました。これには、パッチ を含む Docker バージョン >= 20.10.10 が必要です。回避策として、 代わりに docker run --security-opt seccomp=unconfined を使用することもできますが、セキュリティ上の影響があります。

このイメージの使い方

サーバーインスタンスを起動する

デフォルトでは、ClickHouse には Docker ネットワーク経由でのみアクセスできます。詳しくは、以下のネットワーク関連のセクションを参照してください。 デフォルトでは、上記のサーバーインスタンスは、パスワードなしの default ユーザーで起動します。

ネイティブクライアント を使って接続する

ClickHouse client の詳細については、ClickHouse client を参照してください。

curl を使って接続する

HTTP インターフェイスの詳細については、ClickHouse HTTP インターフェイス をご覧ください。

コンテナーの停止 / 削除

ネットワーク

事前定義されたユーザー default は、パスワードが設定されていない限りネットワークアクセスできません。 詳しくは、以下の「起動時に default データベースとユーザーを作成する方法」および「default ユーザーの管理」を参照してください
特定のポートをマッピングしてコンテナー内部のポートをホストポートに公開することで、 docker で実行中の ClickHouse を公開できます:
または、--network=host を使用してコンテナーがホストポートを直接利用できるようにすることもできます (これにより、ネットワーク性能の向上も期待できます) :
上記の例のユーザー default は、localhost からのリクエストでのみ利用できます

ボリューム

通常、永続化するには、次のフォルダーをコンテナー内にマウントします。
  • /var/lib/clickhouse/ - ClickHouse がデータを保存するメインのフォルダー
  • /var/log/clickhouse-server/ - ログ
次のものもマウントできます。
  • /etc/clickhouse-server/config.d/*.xml - サーバー設定の調整用ファイル
  • /etc/clickhouse-server/users.d/*.xml - ユーザー設定の調整用ファイル
  • /docker-entrypoint-initdb.d/ - データベース初期化スクリプトを格納するフォルダー (以下を参照) 。

Linux capabilities

ClickHouse には高度な機能がいくつかあり、それらを利用するには一部の Linux capabilities を有効にする必要があります これらは必須ではなく、次の docker command-line arguments を使用して有効にできます:
詳細については、“Docker で CAP_IPC_LOCK および CAP_SYS_NICE の capabilities を設定する”

設定

このコンテナーでは、HTTPインターフェイス 用にポート 8123、ネイティブクライアント 用にポート 9000 を公開しています。 ClickHouse の設定は、“config.xml” ファイルで指定します (ドキュメント)

カスタム設定でサーバーインスタンスを起動する

カスタムユーザーとしてサーバーを起動

ローカルのディレクトリをマウントしてイメージを使用する場合は、適切なファイル所有権を保つため、ユーザーを指定する必要があることがほとんどです。--user 引数を使用し、/var/lib/clickhouse/var/log/clickhouse-server をコンテナー内にマウントしてください。そうしないと、イメージがエラーを出して起動できません。

root からサーバーを起動する

root からサーバーを起動すると、ユーザー名前空間が有効な場合に便利です。 その場合は、次を実行します。

起動時に default データベースとユーザーを作成する方法

コンテナーの起動時に、ユーザー (既定では default ユーザーが使用されます) とデータベースを作成したい場合があります。これは、環境変数 CLICKHOUSE_DBCLICKHOUSE_USERCLICKHOUSE_DEFAULT_ACCESS_MANAGEMENTCLICKHOUSE_PASSWORD を使用して行えます。

default ユーザーの管理

CLICKHOUSE_USERCLICKHOUSE_PASSWORDCLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT のいずれも設定されていない場合、ユーザー default のネットワークアクセスは既定で無効になっています。 環境変数 CLICKHOUSE_SKIP_USER_SETUP を 1 に設定すると、default ユーザーを安全でない状態で利用可能にできます。

このイメージを拡張する方法

このイメージから派生したイメージで追加の初期化を行うには、/docker-entrypoint-initdb.d 配下に 1 つ以上の *.sql*.sql.gz、または *.sh スクリプトを追加します。entrypoint が initdb を呼び出した後、サービスを起動する前に追加の初期化を行うため、このディレクトリ内で見つかった *.sql ファイルを実行し、実行可能な *.sh スクリプトを実行し、実行可能でない *.sh スクリプトを source します。
/docker-entrypoint-initdb.d 配下のスクリプトは、ファイル名のアルファベット順で実行されます。スクリプト同士に依存関係がある場合 (たとえば、ビューを作成するスクリプトは、その参照先のテーブルを作成するスクリプトの後に実行する必要がある場合) は、ファイル名が正しい順序でソートされるようにしてください。
また、初期化中に clickhouse-client で使用される環境変数 CLICKHOUSE_USERCLICKHOUSE_PASSWORD を指定することもできます。 たとえば、別のユーザーとデータベースを追加するには、/docker-entrypoint-initdb.d/init-db.sh に次を追加します。
最終更新日 2026年6月25日