ClickHouse

Docker と Docker Compose で ClickHouse をローカル環境に構築する手順

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

前提条件と環境チェック

ローカルで ClickHouse を手軽に試すには、まず Docker と Docker Compose が正しくインストールされていることを確認します。Docker のバージョンが古いとイメージ取得やネットワーク設定で予期せぬエラーになるため、最低要件 : Docker ≥ 20.10 / Compose ≥ 1.29 を満たすかどうかをチェックしてください。本節ではバージョン確認コマンドと、要件未達時の対処方法をまとめます。

Docker と Docker Compose のバージョン確認

Docker 本体のバージョンは次のコマンドで取得できます。

Compose はプラグイン版 (docker compose) と従来のスタンドアロン版 (docker‑compose) の両方が利用可能です。どちらでも下記でバージョンを確認できます。

  • ポイント
  • バージョンが要件未満の場合は、Docker公式サイト の手順に従い最新バージョンへ更新してください。
  • Docker Desktop を利用している環境では「設定」→「General」から自動アップデートを有効化すると、常に最新版が保たれます。

ClickHouse 公式イメージの取得と docker run 実行

このセクションでは、ClickHouse の公式 Docker イメージ(タグ固定)を取得し、永続化・認証設定付きでコンテナを直接起動するまでの流れを解説します。Docker Compose を使わずに単体コンテナだけで手軽に試したいときに有効です。

イメージのプルとタグ指定

公式リポジトリから特定バージョン(例 : 23.11)を明示的に取得します。latest タグは自動更新されるため、再現性が失われやすい点に注意してください。

ポート公開・ボリュームマウント・環境変数設定例

ClickHouse のデフォルトポートは 9000(TCP)8123(HTTP) です。永続化と初期ユーザー作成のために、以下のオプションを付与してコンテナを起動します。

  • -p … ホストとコンテナのポートマッピング。
  • -v … データ永続化用ディレクトリをローカルにバインドマウント。
  • -e … 初期ユーザー・パスワード、認証有効化用環境変数。

Windows でのボリュームマウント例

Windows のコマンドプロンプト(cmd.exe)と PowerShell では、バインドマウントの書式が Linux と異なります。以下にそれぞれの記法を示します。

シェル マウント指定例
cmd -v %cd%\clickhouse_data:/var/lib/clickhouse
PowerShell -v ${PWD}\clickhouse_data:/var/lib/clickhouse

※注意:Windows ではファイルシステムが NTFS のため、Linux 固有の UID(後述の 101)に対応した権限設定は自動的に行われません。パーミッションエラーを防ぐには、コンテナ起動直後に clickhouse-server ユーザーで書き込み可能かどうか確認してください。

UID = 101 の扱いについて(Linux 以外への注意喚起)

公式イメージでは ClickHouse プロセスが UID 101 のユーザーで実行されます。Linux ホスト上では永続化ディレクトリの所有者を同じ UID に合わせることで Permission denied を回避できますが、macOS や Windows など Linux 以外の環境では UID が無視されるかマッピングが不完全になることがあります。そのため:

  • Linuxsudo chown -R 101:101 ./clickhouse_data が推奨です。
  • macOS / Windows:所有者変更は不要ですが、コンテナ内部で書き込み権限が不足している場合は chmod 777 等の緩めたパーミッションを一時的に適用し、動作確認後に必要最小限へ戻すことを推奨します。

Docker Compose での構成ファイル作成

複数サービスや設定変更が頻繁に発生する場合は docker‑compose.yml が便利です。本節では最小構成サンプルと、起動・停止・ログ確認までのフローを解説します。

docker-compose.yml のサンプル

以下は ClickHouse サーバー単体の構成例です。環境変数・永続化ボリューム・初期化スクリプト用ディレクトリが含まれています。

  • container_name を明示すると、docker exec -it ch_server … のように名前だけで操作でき便利です。
  • volumes の 2 番目は起動時に自動実行されるスクリプトを置くための領域です。

起動手順とコンテナ確認

ログに Ready for connections が表示されれば、サーバーは正常に稼働しています。

  • ポイント
  • 開発環境のリセットが必要なときは docker compose down -v でコンテナ本体と永続化ボリュームを同時に削除できます。

初期化スクリプトと永続化設定

ClickHouse コンテナ起動時に自動実行される /docker-entrypoint-initdb.d/ 配下のファイルは、データベースやユーザーの事前作成に便利です。本節ではシェルスクリプト例と、永続化ディレクトリの権限設定・バックアップ手順を詳しく解説します。

/docker-entrypoint-initdb.d/ に置くスクリプト例

以下は ./initdb/init-db.sh として保存し、Compose のボリュームでマウントするサンプルです。実行権限が必要な点に注意してください。

  • このスクリプトはコンテナ起動直後に 1 回だけ実行され、analytics データベースと管理者権限を自動で設定します。

永続化ディレクトリの権限とバックアップ方法

Linux 環境の場合(UID 101 の所有者合わせ)

macOS / Windows 環境の場合(パーミッション緩和例)

バックアップの基本フロー(tar を利用)

  1. コンテナ内部でデータディレクトリを圧縮
  2. ホストへコピーして保存

  • 増分バックアップ が必要な場合は rsync --link-dest を併用すると効率的です。
  • バックアップ取得は、書き込みが少ない時間帯(例 : 夜間メンテナンスウィンドウ)に実施するのが安全です。

設定ファイル (config.xml) のカスタマイズ

ClickHouse の細かなチューニングは config.xml で行います。Docker 環境でもホスト側に設定ファイルを置き、ボリュームマウントすることで簡単に反映できます。

カスタム設定例(メモリ上限とロギング)

./custom_config/config.xml の抜粋例:

  • max_server_memory_usage はサーバーが使用できる最大メモリ量をバイト単位で指定します。
  • ログ出力先はコンテナ内のディレクトリにマウントすれば、ホスト側でも確認できます(例 : ./clickhouse_logs:/var/log/clickhouse-server)。

動作確認と基本クエリ実行

サーバーが起動したら、clickhouse-client を使って接続テストを行います。ローカルにクライアントをインストールする方法と、コンテナ内部から直接実行する方法の両方を紹介します。

コンテナ内部から clickhouse-client を起動

対話モードが開始され、以下のようにバージョン情報が表示されれば成功です。

ホスト側にクライアントをインストールして外部接続

  • macOS(Homebrew)
    bash
    brew install clickhouse-client
    clickhouse-client -h localhost -u admin -p

  • Windows(Chocolatey)
    powershell
    choco install clickhouse-cli
    clickhouse-client.exe -h localhost -u admin -p

SELECT クエリサンプル

期待される出力は 0,1,2,…,9 の十行です。これで列指向データベースの高速ストリーミングが確認できます。

  • ポイント
  • ポート 9000 が正しくマッピングされていないと「Connection refused」になるため、docker psdocker compose config でポート設定を必ず再チェックしてください。

トラブルシューティングと拡張構成例

実運用に近づくにつれて環境固有のエラーやパフォーマンス課題が顕在化します。本節では代表的なトラブルケースとその対処法、さらにマルチコンテナ構成やクラウド向けの留意点をまとめます。

よくあるエラーと解決策

エラーメッセージ 主な原因 推奨対処
Address already in use (ポート競合) ホスト上で 9000/8123 が他プロセスに占有されている docker ps で占有コンテナを確認し、-p 19000:9000 のように別ポートへリダイレクト
Permission denied on /var/lib/clickhouse 永続化ディレクトリの所有者が UID 101 と不一致(Linux)または Windows/macOS の権限不足 Linux は sudo chown -R 101:101 ./clickhouse_data、他 OS は一時的に chmod 777 後に絞り込み
cannot allocate memory Docker のメモリ上限がデフォルトの 2 GB 以下に設定されている Docker Desktop → Settings → Resources でメモリを 4 GB 以上に増やす
ClickHouse server is not ready (起動待ち) 初期化スクリプトの実行時間が長い、またはディスク I/O が逼迫している docker logs -f ch_server で完了まで待機し、Compose の restart: unless-stopped を追加
  • ポイント
  • エラーログは必ず docker logs <コンテナ名> で取得し、公式ドキュメントのトラブルシューティング項目と照合してください。

複数サービス構成例(サーバー+クライアント)

  • 利点
  • CI/CD パイプラインや自動テストでクライアントだけを呼び出すことができ、サーバーの再起動やデータリセットと分離して実行できます。

クラウドデプロイ時の留意点

項目 推奨設定
ネットワーク VPC 内で内部 IP のみ公開し、外部からは VPN または ALB 経由でアクセス
ストレージ 高スループット SSD(例 : AWS gp3)を /var/lib/clickhouse にマウント
CPU/メモリ OLAP クエリ向けに最低 4 コア、8 GB メモリ以上を確保
バックアップ EBS スナップショットや clickhouse-backup ツールで定期的に取得
オーケストレーション 本番環境では Kubernetes の Helm チャート(公式提供)を利用し、Compose からコード化されたマニフェストへ移行
  • ポイント
  • Docker Compose はローカル開発やステージング向けに最適です。クラウド本番環境では、リソース自動スケーリングやサービスディスカバリーを活用できる Kubernetes への移行を検討してください。

本記事のまとめ

  1. 前提条件:Docker ≥ 20.10 と Compose ≥ 1.29 がインストールされているか確認し、必要に応じて最新版へ更新。
  2. イメージ取得と単体起動:タグを固定して公式イメージ clickhouse/clickhouse-server:23.11 をプルし、ポート・永続化ボリューム・認証環境変数でコンテナを立ち上げる。Windows でも %cd%/${PWD} を利用したマウント例を提示。
  3. Docker Compose:最小構成の docker-compose.yml を作成し、docker compose up -d で一括起動・down -v でリセット可能。
  4. 初期化スクリプトと永続化/docker-entrypoint-initdb.d/ に配置したシェルでデータベース作成、Linux は UID 101 の所有権付与、非 Linux はパーミッション緩和の注意点を明記。バックアップは tar または rsync で取得。
  5. 設定ファイルカスタマイズconfig.xml をホスト側からボリュームマウントし、メモリ上限やロギングを調整できることを紹介。
  6. 動作確認:コンテナ内部・外部クライアントの両方で接続テストし、system.numbers クエリで基本的な稼働を検証。
  7. トラブルシューティングと拡張構成:代表的エラーと対処法、マルチコンテナ構成例、クラウドデプロイ時のベストプラクティスを網羅。

これらの手順を踏めば、数分でローカル環境に ClickHouse を構築し、サンプルクエリで動作確認が完了します。次回はパフォーマンスチューニングやクラスタリング構成について詳しく解説する予定ですので、お楽しみに!

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-ClickHouse