الانتقال إلى المحتوى الرئيسي
الدليل الموجود على Docker Hub مُعاد نشره أدناه لسهولة الرجوع إليه. وتعتمد صور Docker المتاحة على حزم deb الرسمية لـ ClickHouse. أمر Docker pull:
docker pull clickhouse/clickhouse-server

الإصدارات

  • تشير العلامة latest إلى أحدث إصدار من أحدث فرع مستقر.
  • تشير علامات الفروع مثل 22.2 إلى أحدث إصدار من الفرع المقابل.
  • تشير علامات الإصدار الكاملة مثل 22.2.3 و22.2.3.5 إلى الإصدار المقابل.
  • تُبنى العلامة head من أحدث commit على الفرع الافتراضي.
  • تحمل كل علامة لاحقة اختيارية هي -alpine للدلالة على أنها مبنية على alpine.

التوافق

  • تتطلب صورة amd64 دعم تعليمات SSE3. تكاد جميع معالجات x86 بعد عام 2005 تدعم 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 بدلًا من ذلك، إلا أن لذلك تبعات أمنية.

طريقة استخدام هذه الصورة

تشغيل مثيل الخادم

docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
افتراضيًا، لن يكون ClickHouse متاحًا إلا عبر شبكة Docker. راجع قسم الشبكات أدناه. افتراضيًا، سيُشغَّل مثيل الخادم المذكور أعلاه باعتباره المستخدم default من دون كلمة مرور.

الاتصال به باستخدام العميل الأصلي

docker run -it --rm --network=container:some-clickhouse-server --entrypoint clickhouse-client clickhouse/clickhouse-server
# OR
docker exec -it some-clickhouse-server clickhouse-client
اطّلع على عميل ClickHouse لمزيد من المعلومات حول عميل ClickHouse.

استخدم curl للاتصال به

echo "SELECT 'Hello, ClickHouse!'" | docker run -i --rm --network=container:some-clickhouse-server buildpack-deps:curl curl 'http://localhost:8123/?query=' -s --data-binary @-
اطّلع على ClickHouse HTTP Interface لمزيد من المعلومات حول واجهة HTTP.

إيقاف الحاوية / إزالتها

docker stop some-clickhouse-server
docker rm some-clickhouse-server

الشبكات

لا يملك المستخدم default المُعرَّف مسبقًا صلاحية الوصول إلى الشبكة ما لم يتم تعيين كلمة مرور، راجع “كيفية إنشاء قاعدة البيانات الافتراضية والمستخدم عند بدء التشغيل” و”إدارة المستخدم default” أدناه
يمكنك إتاحة ClickHouse الذي يعمل في docker عبر ربط منفذ معيّن من داخل الحاوية بمنافذ المضيف:
docker run -d -p 18123:8123 -p19000:9000 -e CLICKHOUSE_PASSWORD=changeme --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
echo 'SELECT version()' | curl 'http://localhost:18123/?password=changeme' --data-binary @-
أو بالسماح للحاوية باستخدام منافذ المضيف مباشرةً عبر --network=host (وهو ما يتيح أيضًا أداءً أفضل للشبكة):
docker run -d --network=host --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
echo 'SELECT version()' | curl 'http://localhost:8123/' --data-binary @-
المستخدم default في المثال أعلاه متاح فقط للطلبات الواردة من localhost

وحدات التخزين

عادةً ما قد تحتاج إلى ربط المجلدات التالية داخل الحاوية لضمان استمرارية البيانات:
  • /var/lib/clickhouse/ - المجلد الرئيسي الذي يخزّن فيه ClickHouse البيانات
  • /var/log/clickhouse-server/ - السجلات
docker run -d \
    -v "$PWD/ch_data:/var/lib/clickhouse/" \
    -v "$PWD/ch_logs:/var/log/clickhouse-server/" \
    --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
قد ترغب أيضًا في ربط:
  • /etc/clickhouse-server/config.d/*.xml - ملفات تتضمن تعديلات على تهيئة الخادم
  • /etc/clickhouse-server/users.d/*.xml - ملفات تتضمن تعديلات على إعدادات المستخدم
  • /docker-entrypoint-initdb.d/ - مجلد يحتوي على نصوص برمجية لتهيئة قاعدة البيانات (انظر أدناه).

ميزات Linux الأمنية

يوفّر ClickHouse بعض الوظائف المتقدمة التي تتطلب تفعيل عدة ميزات أمان في Linux وهي اختيارية، ويمكن تفعيلها باستخدام وسيطات سطر أوامر Docker التالية:
docker run -d \
    --cap-add=SYS_NICE --cap-add=NET_ADMIN --cap-add=IPC_LOCK \
    --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
لمزيد من المعلومات، راجع “تهيئة إمكانيات CAP_IPC_LOCK وCAP_SYS_NICE في Docker”

التهيئة

تفتح الحاوية المنفذ 8123 لـواجهة HTTP والمنفذ 9000 لـالعميل الأصلي. تُمثَّل تهيئة ClickHouse في ملف “config.xml” (الوثائق)

بدء مثيل الخادم باستخدام تهيئة مخصّصة

docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 -v /path/to/your/config.xml:/etc/clickhouse-server/config.xml clickhouse/clickhouse-server

تشغيل server باستخدام مستخدم مخصص

# $PWD/data/clickhouse should exist and be owned by current user
docker run --rm --user "${UID}:${GID}" --name some-clickhouse-server --ulimit nofile=262144:262144 -v "$PWD/logs/clickhouse:/var/log/clickhouse-server" -v "$PWD/data/clickhouse:/var/lib/clickhouse" clickhouse/clickhouse-server
عند استخدام الصورة مع ربط الأدلة المحلية، يُرجَّح أن تحتاج إلى تحديد المستخدم للحفاظ على ملكية الملفات بشكل صحيح. استخدم المعامل --user، واربط /var/lib/clickhouse و/var/log/clickhouse-server داخل الحاوية. وإلا فستعرض الصورة رسالة خطأ ولن تبدأ.

بدء تشغيل الخادم من المستخدم الجذر

يكون تشغيل الخادم من المستخدم الجذر مفيدًا عندما يكون حيّز أسماء المستخدم مفعّلًا. للقيام بذلك، شغّل:
docker run --rm -e CLICKHOUSE_RUN_AS_ROOT=1 --name clickhouse-server-userns -v "$PWD/logs/clickhouse:/var/log/clickhouse-server" -v "$PWD/data/clickhouse:/var/lib/clickhouse" clickhouse/clickhouse-server

كيفية إنشاء قاعدة البيانات الافتراضية والمستخدم عند بدء التشغيل

قد تحتاج أحيانًا إلى إنشاء مستخدم (يُستخدم المستخدم المسمى default افتراضيًا) وقاعدة بيانات عند بدء الحاوية. يمكنك القيام بذلك باستخدام متغيرات البيئة CLICKHOUSE_DB وCLICKHOUSE_USER وCLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT وCLICKHOUSE_PASSWORD:
docker run --rm -e CLICKHOUSE_DB=my_database -e CLICKHOUSE_USER=username -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 -e CLICKHOUSE_PASSWORD=password -p 9000:9000/tcp clickhouse/clickhouse-server

إدارة المستخدم default

يكون وصول المستخدم default عبر الشبكة معطّلًا افتراضيًا إذا لم يتم تعيين أي من CLICKHOUSE_USER أو CLICKHOUSE_PASSWORD أو CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT. يمكن إتاحة المستخدم default بشكل غير آمن عن طريق تعيين متغير البيئة CLICKHOUSE_SKIP_USER_SETUP إلى 1:
docker run --rm -e CLICKHOUSE_SKIP_USER_SETUP=1 -p 9000:9000/tcp clickhouse/clickhouse-server

كيفية توسيع هذه الصورة

لإجراء تهيئة إضافية في صورة مشتقة من هذه الصورة، أضف نصًا برمجيًا واحدًا أو أكثر من النوع *.sql أو *.sql.gz أو *.sh ضمن /docker-entrypoint-initdb.d. بعد أن يستدعي entrypoint الأمر initdb، سيُنفِّذ أي ملفات *.sql، ويُشغِّل أي نصوص برمجية *.sh قابلة للتنفيذ، ويُضمِّن أي نصوص برمجية *.sh غير قابلة للتنفيذ موجودة في ذلك الدليل لإجراء مزيد من التهيئة قبل بدء الخدمة.
تُنفَّذ النصوص البرمجية الموجودة ضمن /docker-entrypoint-initdb.d بترتيب أبجدي حسب اسم الملف. إذا كانت نصوصك البرمجية تعتمد على بعضها بعضًا (على سبيل المثال، نص برمجي يُنشئ views يجب أن يعمل بعد النص البرمجي الذي يُنشئ الجداول المشار إليها)، فتأكَّد من أن أسماء الملفات مرتبة بالترتيب الصحيح.
يمكنك أيضًا توفير متغيرَي البيئة CLICKHOUSE_USER وCLICKHOUSE_PASSWORD لاستخدامهما مع clickhouse-client أثناء التهيئة. على سبيل المثال، لإضافة مستخدم آخر وقاعدة بيانات أخرى، أضف ما يلي إلى /docker-entrypoint-initdb.d/init-db.sh:
#!/bin/bash
set -e

clickhouse client -n <<-EOSQL
    CREATE DATABASE docker;
    CREATE TABLE docker.docker (x Int32) ENGINE = MergeTree
    ORDER BY ();
EOSQL
آخر تعديل في ٢٥ يونيو ٢٠٢٦