كيفية تثبيت Docker و Docker-compose

السلام عليكم ورحمة الله وبركاتة.
اليوم سوف اشرح كيفية تثبيت Docker على لينكس. وهذا شرح مبدئي لسلسله عن Docker سوف اكتبها.

ماهو Docker ؟

دوكر هو أشهر محرك حاويات في الساحة, وهو بدء مفهوم السحابة الحالي.
بامكانك التفكير بDocker كانه نظام وهمي, لكن بدون اخذ موارد كثيرة, وذلك عبر استخدام نفس كيرنل النظام الاساسي و جعل النظام داخل الحاويه بسيط جدا ولا يحتوي الا على الاشياء الضرورية.

الفائدة من هذه الطريقة انه بامكانك تشغيل خدمات بثواني. بدلا من تثبيت قاعدة بيانات postgres و انشاء مستخدم وتشغيلها يدويا.
فقط نزل حاويتهم الرسميه, ضع الاسم وكلمة المرور وقاعدة البيانات وانتهى. لا تحتاج ان تثبت اي شيء على النظام الاساسي ولا تحتاج ان تثبت اي حزم محليا او اي اعتماديات. كل شيء معزول داخل الحاوية.
ويكون سهل جدا نقل و تكرار البرمجيه على عدة اجهزة. لانك تشحن كامل البرنامج مع كل اعتمادياتة. لذلك السحابة كلها تعتمد على الحاويات.

ما هو Docker Compose ?

سابقا, كانت الطريقة المعروفة لتشغيل الحاويات هي اوامر طويله.
ولتحديثها يجب عليه ان توقف الحاوية, تحذفها, ثم تنزل نسخه احدث منها وتضع نفس الامر الطويل لتشغيلها.
Docker compose هو معيار مبني على yaml لعمل ملف يختصر كل هذه الاشياء.
ملف يوجد به كل الحاويات المستخدمة, واعداداتها.
بحيث بامر واحد تحذفها,تشغلها أو تحدثها بدون الحاجة لاوامر معقدة.
فقط امر docker compose up -d لتشغيل الحاويات و docker compsoe pull لتنزيل صور احدث من الحاويات وغيرها من الاوامر.

لذلك استخدام Docker دون compose مزعج فعليا. لدرجة ان احد الاشخاص عمل موقع يقوم بتحويل اوامر Docker الطويلة الى ملف docker compose, يعطيك ملف يعمل معظم الوقت.

الانظمة المدعومة بشكل رسمي من Docker.

قائمة محدثه في تاريخ كتابة الموضوع.

التوزيعة arm64 / aarch64 x86_64 / amd64 arm (32-bit) s390x
CentOS
Debian
Fedora
RHEL
SLES
Ubuntu
Binaries

لن اشرح RHEL و SLES او binaries لانك لو تستخدمها المفروض تعرف تتبع الشرح الرسمي :sweat_smile:.

اختيار التوزيعه لا يفرق كثيرا في تجربة Docker قد يساعد وجود كيرنل حديثه على دعم ميزات متقدمة. بشكل عام أختر الذي لديك خبرة فيه.
التوزيعات المبنيه على التوزيعات المدعومة مثل linux mint او Rocky Linux وغيرها تتبع نفس اوامر التوزيعه الام

هناك توزيعات تقدم حزم غير رسميه, مثل Opensuse او حتى التوزيعات المدعومة نفسها قد تقدم حزم خاصة لها في مستودعاتها.
هذه الحزم غير مدعومة من Docker وقد تكون متاخرة في التحديثات او الميزات.

تثبيت Docker engine

معظم الوقت ما تشير له بدوكر, هو Docker engine ويعني محرك دوكر.
وهي الحزمة الاساسية لدوكر وداخلها كل البرمجية.

هناك طريقتين لتثبيت Docker.

سكربت تلقائي التثبيت لكل التوزيعات المدعومة

هذا سكربت مجهز مسبقا من دوكر, كل الي عليك تحميله وتشغيلة وسوف يتعرف على التوزيعه ويضيف المستودعات ويحمل دوكر والحزم المساعدة و Docker compose تلقائيا.

شركة Docker لاتنصح باستخدام هذا السكربت في سيرفر في وضع الانتاج(production)

اذا لديك تحفظات امنية حول تشغيل سكربت بصلاحيات الجذر عبر الانترنت. ربما الطريقة الاخرى تناسبك اكثر.

لتثبيت دوكر عبر سكربت غير تفاعلي الرسمي.

 curl -fsSL https://get.docker.com -o get-docker.sh
 sudo sh get-docker.sh

اضافة المستودعات والتثبيت عبر مدير الحزم

CentOS

  • تاكد من عدم تعطيل مستودع centos-extras
  • محرك تخزين `overlay2’ هو المنصوح به
أضف المستودع
sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
تثيبت Docker Engine
sudo yum install docker-ce docker-ce-cli containerd.io
شغل Docker
sudo systemctl start docker

لجعل docker يعمل عند الاقلاع

sudo systemctl enable docker

عندما يظهر طلب موافقه على مفتاح GPG, تاكد ان البصمة(Fingerprint) توافق 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 اذا توافقه اقبل به.

Debian

نثبت الحزم الضرورية و اضافه دعم https
 sudo apt-get update
 sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
نضيف مفتاح GPG الرسمي لدوكر
 curl -fsSL https://download.docker.com/linux/debian/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/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
تثبيت Docker Engine
 sudo apt-get update
 sudo apt-get install docker-ce docker-ce-cli containerd.io

Fedora

أضف المستودع
 sudo dnf -y install dnf-plugins-core

sudo dnf config-manager \
    --add-repo \
    https://download.docker.com/linux/fedora/docker-ce.repo
تثيبت Docker Engine
sudo dnf install docker-ce docker-ce-cli containerd.io

عندما يظهر طلب موافقه على مفتاح GPG, تاكد ان البصمة(Fingerprint) توافق 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 اذا توافقه اقبل به.

شغل Docker
sudo systemctl start docker

لجعل docker يعمل عند الاقلاع

sudo systemctl enable docker

عندما يظهر طلب موافقه على مفتاح GPG, تاكد ان البصمة(Fingerprint) توافق 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 اذا توافقه اقبل به.

Ubuntu

نثبت الحزم الضرورية و اضافه دعم https
 sudo apt-get update
 sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
نضيف مفتاح GPG الرسمي لدوكر
 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
تثبيت Docker Engine
 sudo apt-get update
 sudo apt-get install docker-ce docker-ce-cli containerd.io

بعد التثبيت

اختبار دوكر

sudo docker run hello-world

استخدام Docker بدون Sudo.

Docker يحتاج لصلاحيات الجذر ليعمل بشكل افتراضي, لذلك مع كل امر سوف تحتاج sudo.

بامكانك تجاوز هذا عبر اضافه المستخدم لمجموعة Docker, اضافه المستخدم لهذه المجموعه سوف يعطيه صلاحيه الجذر على docker لذلك لا تضيفه الا اذا كنت تثق بالمستخدم.

انشاء مجموعة Docker

 sudo groupadd docker

اضف نفسك للمجموعة

 sudo usermod -aG docker $USER

تشغيل دوكر عند الاقلاع.

في توزيعات دبيان و أوبونتو يتم تشغيل دوكر بشكل تلقائي عند الاقلاع.
على التوزيعات الاخرى هذه الطريقة.

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

اختبر تشغيل دوكر بدون sudo

 docker run hello-world

تثبيت Docker Compose

اذا لم تستخدم السكربت المساعد, بامكانك تثبيت Compose عبر تثبيت حزمة docker-compose-plugin

Debian/Ubuntu

sudo apt install docker-compose-plugin

Centos/Fedora/RHEL

sudo dnf install docker-compose-plugin

تجربة

docker compose version

اذا تريد استخدام دوكر بدون جذر
هنا شرح عن الطريقة لتثبيت دوكر rootless

تعديل1: تم تحديث طريقة تثبيت Compose مع استخدام حزمة docker-compose-plugin الجديدة

المصادر

هل تستخدم دوكر؟
  • نعم
  • لا
  • مبتدء احاول التعلم عليه
0 ناخب
5 إعجابات

شرح رائع
اقترح إكمال السلسلة بشرح
portainer
وتثبيت
سرفرات مثل pihole , nextcloud,nginx

باقي فقط ان اكتب عن docker userNS remap. ثم سوف انتقل للانظمه والتطبيقات…

إعجاب واحد (1)

fedora ~]$ dnf search docker-compose
=========================================== Name Exactly Matched: docker-compose ============================================
docker-compose.noarch : Multi-container orchestration for Docker
=============================================== Name Matched: docker-compose ================================================
docker-compose-plugin.x86_64 : Docker Compose (V2) plugin for the Docker CLI

نعم يوجد docker compose v2 الان في المستودع الرسمي لفيدورا لا حاجة للتثبيت اليدوي

مستودع فيدورا ولا مستودع دوكر لفيدورا ؟
لانه لو مستودع فيدورا يعني سيكون متاخر بالتحديثات وهذا لا نريدة.

Installed Packages
Name : docker-compose
Version : 1.29.2
Release : 3.fc35
Architecture : noarch
Size : 884 k
Source : docker-compose-1.29.2-3.fc35.src.rpm
Repository : @System
From repo : fedora
Summary : Multi-container orchestration for Docker
URL : GitHub - docker/compose: Define and run multi-container applications with Docker

اذا مستودع فيدروا، وهذا يعني انه سوف يتاخر بالتحديثات.
انتظر دمجه بمستودع دوكر الرسمي لكل التوزيعات.

تم تحديث طريقة تثبيت docker-compose لان تم اضافه حزمة docker-compose-plugin في مستودعات دوكر الرسمية.