docker
، cri
و crictl
در خط فرمانdocker
)kubectl
در Kubernetesدر سیستمعامل لینوکس، ساختار فایلها بهصورت سلسلهمراتبی (هرمگونه) است که از ریشه (/) شروع میشود. تمامی فایلها و دایرکتوریها از این دایرکتوری اصلی منشعب میشوند.
/ (ریشه - Root)
✅ ریشه تمام سیستمفایلهای لینوکس است و همه دایرکتوریها از آن منشعب میشوند.
✅ دسترسی به این پوشه برای کاربران عادی محدود است و تغییرات در آن نیاز به دسترسی ریشه (root) دارد.
/bin (باینریهای ضروری)
✅ شامل فرمانهای اجرایی ضروری مانند ls، cp، mv، rm و ... است.
✅ این دستورات حتی زمانی که سیستم در حالت تککاربره (Single-User Mode) است، در دسترس هستند.
✅ نمونه فایلهای داخل /bin:
/boot (فایلهای راهاندازی - Boot)
✅ شامل فایلهای مربوط به بوت شدن سیستمعامل مانند کرنل (vmlinuz)، بوتلودر (GRUB) و سایر فایلهای پیکربندی بوت است.
✅ هر گونه تغییر اشتباه در این پوشه ممکن است باعث عدم بوت شدن سیستم شود!
/dev (دستگاهها - Devices)
✅ شامل فایلهای مربوط به دستگاههای سختافزاری و مجازی متصل به سیستم است.
✅ برخی نمونهها:
/etc (فایلهای تنظیمات - Configuration)
✅ حاوی فایلهای پیکربندی و تنظیمات سیستم و سرویسها است.
✅ برخی از مهمترین فایلها:
/home (دایرکتوری کاربران)
✅ شامل پوشههای شخصی کاربران عادی است.
✅ مسیر هر کاربر بهصورت /home/username نامگذاری میشود.
✅ محتویات /home شامل اسناد، تنظیمات و دادههای کاربران است.
✅ کاربران عادی فقط به پوشه خودشان دسترسی دارند.
/lib و /lib64 (کتابخانههای سیستم)
✅ شامل کتابخانههای اشتراکی (.so) که برای اجرای برنامهها و دستورات سیستمی و باینریها لازم هستند.
✅ این پوشه شبیه به C:\Windows\System32 در ویندوز است.
/media و /mnt (اتصال دستگاهها - Mount Points)
✅ این پوشهها برای اتصال (mount) دیسکها و دستگاههای خارجی مانند فلش USB، DVD و پارتیشنهای دیگر استفاده میشوند.
✅ /media معمولاً برای اتصال خودکار دستگاههای خارجی است، درحالیکه /mnt برای اتصال دستی استفاده میشود.
/opt (نرمافزارهای اضافی - Optional Software)
✅ حاوی نرمافزارهای اضافی است که خارج از بستههای رسمی سیستمعامل نصب میشوند.
✅ بهطور معمول نرمافزارهای شخص ثالث مانند Google Chrome و Zoom در این پوشه قرار میگیرند.
/proc (اطلاعات کرنل و پردازشها - Processes & Kernel Info)
✅ یک سیستم فایل مجازی که اطلاعات پردازشهای در حال اجرا و کرنل را ذخیره میکند.
✅ برخی نمونههای مهم:
/root (دایرکتوری کاربر root)
✅ معادل پوشهی /home/root برای کاربر مدیر (root) است.
✅ فقط کاربر root میتواند به این دایرکتوری دسترسی داشته باشد.
/run (اطلاعات موقتی پردازشها)
✅ این دایرکتوری شامل اطلاعات موقتی درباره پردازشهای در حال اجرا است.
✅ پس از ریبوت سیستم، محتویات این پوشه پاک میشود.
/sbin (دستورات مدیریتی - System Binaries)
✅ شامل دستورات اجرایی سطح مدیریت است که معمولاً فقط توسط کاربر root استفاده میشوند.
✅ برخی از دستورات داخل /sbin:
/srv (دادههای سرویسها - Service Data)
✅ محلی برای ذخیره دادههای سرویسهای شبکهای مانند وبسرورها و FTP است.
✅ مثال:
/sys (اطلاعات کرنل و سختافزار)
✅ مانند /proc یک سیستم فایل مجازی است که اطلاعاتی درباره سختافزار و کرنل ارائه میدهد.
/tmp (فایلهای موقتی - Temporary Files)
✅ شامل فایلهای موقتی که بهصورت خودکار حذف میشوند.
✅ پس از ریبوت سیستم، محتویات این پوشه پاک میشود.
/usr (نرمافزارهای سیستم و ابزارهای کاربر)
✅ شامل نرمافزارها، کتابخانهها و فایلهای اجرایی سیستم است.
✅ این پوشه دارای زیرپوشههایی است:
/var (فایلهای متغیر - Variable Data)
✅ شامل دادههایی که مرتب تغییر میکنند مانند لاگهای سیستم، فایلهای صف، کش و اطلاعات دیتابیس.
✅ برخی از زیرپوشهها:
/app (فایلهای نرم افزار)
✅ شامل فایلهای مرتبط به نرم افزار در برخی از کانتینرها
هر دایرکتوری در لینوکس کاربرد مشخصی دارد و تغییرات نادرست در برخی از آنها (مانند /boot، /etc یا /dev) میتواند باعث آسیب به سیستم شود. درک این ساختار به مدیریت بهتر لینوکس و حل مشکلات آن کمک میکند.
در اینجا یک جدول با دستورات مهم لینوکس به همراه اختصار، تلفظ فونوتیک و توضیحات مختصر و دستهبندی آنها آورده شده است:
دستور | اختصار | تلفظ فونوتیک | توضیح مختصر | دستهبندی |
---|---|---|---|---|
pwd |
Print Working Directory | /piːˈdʌbljuːˈdi/ | مسیر دایرکتوری جاری را نمایش میدهد. | مدیریت دایرکتوری و فایلها |
mkdir folder |
Make Directory | /ˈmɛɪk dɪˈrɛktəri/ | دایرکتوری جدید به نام "folder" ایجاد میکند. | مدیریت دایرکتوری و فایلها |
cd folder |
Change Directory | /ʧeɪndʒ dɪˈrɛktəri/ | به دایرکتوری "folder" وارد میشود. | مدیریت دایرکتوری و فایلها |
ls -la |
List | /lɪst/ | لیست محتویات دایرکتوری با جزئیات و فایلهای مخفی را نمایش میدهد. | مدیریت دایرکتوری و فایلها |
chmod 755 file.sh |
Change Mode | /ʧeɪndʒ məʊd/ | تغییر مجوزهای دسترسی به فایل. | مدیریت دسترسیها و امنیت |
chown user:group file.txt |
Change Owner | /ʧeɪndʒ ˈəʊnər/ | مالکیت فایل را تغییر میدهد. | مدیریت دسترسیها و امنیت |
rm -rf folder |
Remove | /rɪˈmuːv/ | حذف دایرکتوری یا فایل بههمراه تمام محتویات آن بدون تأیید. | مدیریت دایرکتوری و فایلها |
cp -r source dest |
Copy | /ˈkɒpi/ | دایرکتوری یا فایل را از "source" به "dest" کپی میکند. | مدیریت دایرکتوری و فایلها |
reboot |
Reboot | /rɪˈbuːt/ | سیستم را ریستارت میکند. | مدیریت سیستم |
cd .. |
Change Directory Up | /ʧeɪndʒ dɪˈrɛktəri ʌp/ | به دایرکتوری والد میرود. | مدیریت دایرکتوری و فایلها |
top |
Task Overview | /tɒp/ | نمایش اطلاعات جاری سیستم و پردازشها. | نظارت سیستم |
ps |
Process Status | /piː ɛs/ | نمایش لیست پردازشهای در حال اجرا. | نظارت سیستم |
useradd tahmasebi |
User Add | /ˈjuːzər æd/ | کاربر جدید به نام "tahmasebi" ایجاد میکند. | مدیریت کاربران و گروهها |
passwd tahmasebi |
Password | /ˈpæswɜːd/ | رمز عبور کاربر "tahmasebi" را تنظیم میکند. | مدیریت کاربران و گروهها |
id tahmasebi |
Identity | /aɪˈdɛntɪti/ | اطلاعات کاربری (UID و گروهها) برای "tahmasebi" را نمایش میدهد. | مدیریت کاربران و گروهها |
`curl -sfL https://get.k3s.io | sh -` | Curl | /kɜːrl/ | نصب K3s از طریق curl. |
systemctl |
System Control | /ˈsɪstəm kənˈtroʊl/ | مدیریت سرویسها با استفاده از systemd. | مدیریت سیستم و سرویسها |
apt install |
Apt Install | /æpt ɪnˈstɔːl/ | نصب بستههای نرمافزاری در سیستمهای مبتنی بر دبیان (مثل Ubuntu). | نصب و مدیریت نرمافزار |
apt update |
Apt Update | /æpt ʌpˈdeɪt/ | بروزرسانی لیست بستههای موجود. | نصب و مدیریت نرمافزار |
apt upgrade |
Apt Upgrade | /æpt ʌpˈɡreɪd/ | ارتقاء بستههای نرمافزاری به نسخههای جدیدتر. | نصب و مدیریت نرمافزار |
history |
History | /ˈhɪstəri/ | نمایش تاریخچه دستورات اجرا شده در ترمینال. | نظارت و مدیریت ترمینال |
sudo systemctl daemon-reload |
System Control Daemon Reload | /ˈsuːduː ˈsɪstəm kənˈtroʊl ˈdeɪmən rɪˈləʊd/ | بارگذاری مجدد تنظیمات systemd. | مدیریت سیستم و سرویسها |
sudo systemctl restart k3s |
System Control Restart | /ˈsuːduː ˈsɪstəm kənˈtroʊl rɪˈstɑːrt/ | ریستارت سرویس K3s. | مدیریت سیستم و سرویسها |
sudo |
Super User Do | /ˈsuːduː/ | اجرای دستور با دسترسیهای مدیریتی. | مدیریت سیستم و کاربران |
su |
Switch User | /suː/ | تغییر به حساب کاربری دیگر (معمولاً root). | مدیریت سیستم و کاربران |
/ |
Root Directory | /rʊt dɪˈrɛktəri/ | دایرکتوری اصلی سیستم فایل لینوکس. | مدیریت سیستم |
~ |
Home Directory | /hoʊm dɪˈrɛktəri/ | دایرکتوری خانگی کاربر جاری. | مدیریت دایرکتوری و فایلها |
man command_name |
Manual | /ˈmænʊəl/ | نمایش صفحه راهنمای دستور "command_name". | راهنمایی دستورات |
nano |
Nano Editor | /ˈnænoʊ/ | ویرایشگر متنی ساده برای ویرایش فایلها. | ویرایشگر متنی |
vim |
Vim Editor | /vɪm/ | ویرایشگر متنی پیشرفته برای ویرایش فایلها. | ویرایشگر متنی |
cat |
Concatenate | /kæṭ/ | نمایش محتویات یک فایل. | مدیریت دایرکتوری و فایلها |
touch |
Touch | /tʌʧ/ | ایجاد یک فایل خالی جدید یا بروزرسانی زمان دسترسی فایل. | مدیریت دایرکتوری و فایلها |
این جدول به شما کمک میکند تا دستورات مختلف لینوکس را با اختصار، تلفظ صحیح، توضیح مختصر و دستهبندیهای مختلف بهتر بشناسید.
top
، htop
– نمایش پردازشهای در حال اجرا
mpstat -P ALL
– نمایش وضعیت پردازنده
ps aux
– نمایش پردازشهای سیستم
pstree -p
– نمایش درخت پردازشها
df -h
– نمایش فضای دیسک
duf -all
– نمایش فضای استفادهشده در دیسک
ncdu
– تحلیل استفاده از فضای دیسک
netstat -tulnp
– نمایش وضعیت پورتها و اتصالات
iptables -L -v -n
– نمایش قوانین فایروال
ufw status
– بررسی وضعیت فایروال UFW
ufw allow 3128/tcp
– باز کردن پورت ۳۱۲۸ در فایروال
systemctl
– مدیریت سرویسهای لینوکس
sudo systemctl status crowdsec
– بررسی وضعیت سرویس CrowdSec
sudo systemctl stop squid
– توقف سرویس Squid
sudo systemctl restart squid
– راهاندازی مجدد Squid
sudo journalctl -u crowdsec --no-pager | tail -n 50
– نمایش لاگهای اخیر سرویس CrowdSec
sudo cat /var/log/crowdsec.log | tail -n 50
– نمایش لاگهای CrowdSec
cscli alerts list
– نمایش هشدارهای CrowdSec
cscli decisions list
– نمایش تصمیمات امنیتی گرفتهشده توسط CrowdSec
cscli metrics
– نمایش متریکهای CrowdSec
crictl --version
– بررسی نسخه ابزار CRI-O برای مدیریت کانتینرها
sudo crictl rmi $(sudo crictl images -q)
– پاک کردن تمامی ایمیجهای کانتینری
apt install duf
– نصب ابزار duf برای بررسی فضای دیسک
wget https://github.com/goharbor/harbor/releases/...
– دانلود Harbor
tar xvf harbor-online-installer-v2.9.0.tgz
– استخراج فایل فشرده
cd harbor && nano harbor.yml
– ویرایش پیکربندی Harbor
./install.sh
– نصب Harbor
kubectl top pod
– نمایش مصرف منابع پادهای کوبرنتیز
kubectl delete pod --field-selector=status.phase!=Running --all-namespaces
– حذف پادهای مشکلدار
kubectl get rs --all-namespaces -o json | jq -r '...' | xargs -r -n2 kubectl delete rs -n
– حذف ReplicaSets معیوب
k get no -o wide
– نمایش اطلاعات گرههای کوبرنتیز
k get po -o wide
– نمایش اطلاعات پادهای کوبرنتیز
k api-resources
– نمایش منابع API کوبرنتیز
docker save -o nginx.tar alpine:3.21.3
– ذخیره ایمیج داکر در فایل
docker load -i /tmp/nginx.tar
– بارگذاری ایمیج ذخیرهشده
rm /var/lib/docker/*
– حذف دادههای داکر
curl -sfL https://get.k3s.io | sh -
– نصب K3s برای اجرای سبک Kubernetes
squid
– تنظیمات سرویس Squid
nano /etc/squid/squid.conf
– ویرایش تنظیمات Squid
tail -f /var/log/squid/access.log
– مشاهده لاگهای Squid
tinyproxy
– استفاده از Tinyproxy
privoxy
– استفاده از Privoxy
unzip
– استخراج فایلهای فشرده
wget ...
– دانلود فایل از اینترنت
tar xvf ...
– استخراج فایلهای tar
این دستهبندی به شما کمک میکند تا دستورات را بهصورت منظم و کاربردی مدیریت کنید.
دستورات برای بروزرسانی مخازن، نصب و مدیریت بستههای نرمافزاری:
apt update
→ بروزرسانی لیست بستهها
apt install docker.io
→ نصب داکر
apt install nmap
→ نصب ابزار اسکن شبکه
sudo apt-get install ca-certificates curl gnupg
→ نصب ابزارهای موردنیاز برای دانلود و مدیریت کلیدهای امنیتی
دستورات برای مدیریت تنظیمات شبکه و بررسی ارتباطات:
nano /etc/netplan/50-cloud-init.yaml
→ ویرایش پیکربندی شبکه
netplan apply
→ اعمال تغییرات شبکه
nmap localhost
→ اسکن پورتهای باز سیستم
netstat -lntu
→ نمایش پورتهای باز و ارتباطات شبکه
curl ifconfig.co
→ دریافت آدرس IP عمومی
دستورات رایج برای مدیریت سیستم و نمایش اطلاعات:
ls
→ نمایش فایلها و دایرکتوریها
halt -p
→ خاموش کردن سیستم
keyboard-setup.service
→ راهاندازی تنظیمات صفحهکلید
دستورات پرکاربرد برای کار با داکر:
docker ps
→ نمایش کانتینرهای در حال اجرا
docker image ls
→ نمایش لیست تصاویر داکر
docker run -p 8080:8080 -td test02
→ اجرای یک کانتینر روی پورت 8080
docker exec –it nginx-test /bin/bash
→ ورود به کانتینر داکر
دستورات نصب و پیکربندی K3s و Helm:
curl -sfL https://get.k3s.io | sh -
→ نصب K3s
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
→ دانلود اسکریپت نصب Helm
./get_helm.sh
→ اجرای نصب Helm
/etc/rancher/k3s/k3s.yaml
→ فایل تنظیمات K3s
kubectl cluster-info
→ نمایش اطلاعات کلاستر
kubectl get nodes
→ لیست نودها
kubectl get pods --watch
→ نمایش زنده پادها
kubectl describe pod
→ نمایش اطلاعات دقیق یک پاد
kubectl get svc -n kube-system | grep traefik
→ بررسی سرویس Traefik
kubectl create deploy nginx --image nginx
→ ایجاد دیپلویمنت Nginx
kubectl expose deploy nginx --type LoadBalancer --port 80
→ ایجاد سرویس برای دسترسی به دیپلویمنت
kubectl create secret tls example-tls-secret --cert=path/to/tls.crt --key=path/to/tls.key -n namespace
→ ایجاد سکرت TLS
kubectl delete svc nginx
→ حذف سرویس Nginx
kubectl delete --all deployments,pods,svc --namespace=default
→ حذف همه منابع در فضای نام پیشفرض
kubectl port-forward traefik-f4564c4f4-4v2hd -n kube-system 9000:9000 &
→ انتقال پورت برای دسترسی به داشبورد Traefik
kubectl get ingress --all-namespaces
→ نمایش همه ورودیهای Ingress
curl https://httpstatus.io/
→ بررسی وضعیت HTTP یک وبسایت
curl -sfL https://get.k3s.io | sh -s - --docker
→ نصب K3s با پشتیبانی از Docker
pwd
– نمایش مسیر جاری
mkdir folder
– ایجاد یک دایرکتوری
cd folder
– ورود به یک دایرکتوری
cd ..
– بازگشت به دایرکتوری والد
ls -la
– نمایش لیست فایلها و دایرکتوریها با جزئیات
rm -rf folder
– حذف دایرکتوری بهصورت بازگشتی و اجباری
cp -r source dest
– کپی یک دایرکتوری و محتویات آن
touch file.txt
– ایجاد یک فایل جدید
chmod 755 file.sh
– تغییر سطح دسترسی فایل
chown user:group file.txt
– تغییر مالکیت یک فایل
useradd tahmasebi
– ایجاد یک کاربر جدید
passwd tahmasebi
– تغییر رمز عبور کاربر
id tahmasebi
– نمایش اطلاعات کاربر
top
– نمایش پردازشهای در حال اجرا
ps aux
– نمایش تمامی پردازشهای فعال
reboot
– راهاندازی مجدد سیستم
apt install package
– نصب یک بسته نرمافزاری
apt update
– بهروزرسانی لیست بستهها
apt upgrade
– ارتقای بستههای نصبشده
systemctl
– مدیریت سرویسهای لینوکس
sudo systemctl restart k3s
– راهاندازی مجدد سرویس K3s
curl -sfL https://get.k3s.io
– دریافت و اجرای اسکریپت نصب K3s
wget [URL]
– دانلود فایل از اینترنت
netstat -tulnp
– نمایش پورتها و اتصالات باز
nano file
– ویرایش فایل متنی با نانو
vim file
– ویرایش فایل متنی با ویم
cat file
– نمایش محتوای یک فایل
sudo command
– اجرای یک دستور با سطح دسترسی ریشه
su
– تغییر کاربر به root
/
– مسیر ریشه سیستم
~
– مسیر خانه کاربر
man command_name
– نمایش مستندات مربوط به یک دستور
history
– نمایش لیست دستورات اجراشده
این دستورات در ترکیب با مواردی که قبلاً دستهبندی کرده بودید، میتواند بهعنوان یک مستند کامل برای مدیریت سیستم لینوکس استفاده شود. آیا نیاز به اصلاح یا تکمیل بیشتری دارید؟
Docker Hub یک سرویس ابری ارائهشده توسط Docker است که برای یافتن، ذخیره، اشتراکگذاری و مدیریت ایمیجهای Docker استفاده میشود. در hub.docker.com چندین قابلیت و ویژگی مهم وجود دارد
مخازن Docker در Docker Hub جایی هستند که ایمیجهای Docker ذخیره و مدیریت میشوند. مخازن به دو دسته تقسیم میشوند:
Public Repositories (عمومی): هر کسی میتواند به ایمیجهای آن دسترسی داشته باشد.
Private Repositories (خصوصی): فقط افرادی که مجوز دارند، میتوانند ایمیجها را مشاهده و دانلود کنند.
✅ کاربرد: نگهداری ایمیجها برای استقرار آسانتر و بهاشتراکگذاری با تیم توسعه.
هر ایمیج در Docker Hub میتواند شامل نسخههای مختلفی (tags) باشد. این نسخهها برای مشخص کردن ورژنهای مختلف یک برنامه یا سرویس استفاده میشوند.
✅ کاربرد: استفاده از ایمیجهای رسمی مثل nginx:latest
یا mysql:8.0
برای راهاندازی سریع سرویسها.
Docker Hub امکان مدیریت کاربران را از طریق سازمانها و تیمها فراهم میکند:
Organizations: مجموعهای از کاربران که دسترسی به یک یا چند مخزن دارند.
Teams: زیرمجموعههایی از کاربران داخل یک سازمان که دسترسی کنترلشده دارند.
✅ کاربرد: مدیریت اعضای تیم توسعه و تعیین سطوح دسترسی مختلف.
Webhooks امکان اجرای خودکار یک اسکریپت یا عملیات خاص را پس از push شدن یک ایمیج جدید در Docker Hub فراهم میکنند.
✅ کاربرد: بهروزرسانی خودکار سرویسها در سرورها پس از انتشار نسخه جدید ایمیج.
Docker Hub برای کاربران رایگان، محدودیتهایی در دانلود ایمیج اعمال کرده است:
کاربران ناشناس (بدون ورود): حداکثر 100 درخواست در هر 6 ساعت
کاربران رایگان: حداکثر 200 درخواست در هر 6 ساعت
کاربران پولی (Pro و Team): بدون محدودیت
✅ کاربرد: برنامهریزی صحیح برای جلوگیری از توقف سرویسها در اثر محدودیت دانلود.
Docker Hub علاوه بر نسخه رایگان، پلنهای پولی نیز ارائه میدهد:
Free: دسترسی به ایمیجهای عمومی، محدودیت دانلود
Pro: افزایش تعداد مخازن خصوصی، امنیت بیشتر
Team: مدیریت تیمی و کنترل دسترسی
Business: مناسب برای شرکتهای بزرگ با نیازهای امنیتی و مدیریتی گسترده
✅ کاربرد: انتخاب پلن مناسب بر اساس نیازهای پروژه.
Docker Hub یک سرویس قدرتمند برای مدیریت ایمیجهای Docker است و امکانات متنوعی مثل مخازن، ایمیجهای رسمی، Webhooks، مدیریت تیمی، و پلنهای پولی ارائه میدهد. بسته به نیاز خود، میتوانید از نسخه رایگان یا پولی آن استفاده کنید.
tensorflow/tensorflow
(TensorFlow برای آموزش و استنتاج مدلهای AI)pytorch/pytorch
(PyTorch برای یادگیری عمیق)huggingface/transformers
(مدلهای NLP و Gen AI)nvidia/cuda
(اجرای مدلهای AI روی GPUهای NVIDIA)nginx
(وب سرور محبوب)mysql
(پایگاه داده MySQL)redis
(پایگاه داده درونحافظهای)alpine
(سیستمعامل سبک برای اجرای سریع کانتینرها)postgres
(پایگاه داده PostgreSQL)mongo
(پایگاه داده MongoDB)mysql
(پایگاه داده MySQL)minio/minio
(ذخیرهسازی شیگرا مشابه Amazon S3)prom/prometheus
(سیستم مانیتورینگ و هشداردهی Prometheus)grafana/grafana
(داشبوردهای گرافیکی برای مانیتورینگ)fluent/fluentd
(ابزار جمعآوری و پردازش لاگها)node
(محیط اجرایی Node.js)python
(محیط توسعه Python)golang
(ابزارهای توسعه برای زبان Go)maven
(ابزار ساخت پروژههای جاوا)4. Docker Official Images (ایمیجهای رسمی)
ایمیجهای رسمی توسط Docker و شرکای معتبر آن ارائه میشوند و کیفیت و امنیت آنها تأیید شده است. برخی از معروفترین ایمیجهای رسمی عبارتاند از:
alpine
(سیستمعامل سبک)
nginx
(وب سرور)
mysql
(پایگاه داده)
python
(محیط اجرای پایتون)
✅ کاربرد: استفاده از ایمیجهای معتبر و امن برای توسعه و استقرار سرویسها.
5. Docker Verified Publisher (ناشران تأییدشده)
شرکتهای شناختهشده و توسعهدهندگان بزرگ میتوانند ایمیجهای خود را بهعنوان ناشر تأییدشده در Docker Hub قرار دهند. این ایمیجها معمولاً مورد اعتماد هستند.
✅ کاربرد: استفاده از ایمیجهای رسمی ارائهشده توسط شرکتهای معتبر مثل Red Hat، Microsoft و Bitnami.
Docker Hub دارای دستهبندیهای مختلفی برای ایمیجها است که به کاربران کمک میکند بهراحتی فناوریهای مورد نیاز پیدا نمود. در ادامه، توضیحی درباره هر دسته و نمونههایی از ایمیجهای معروف ارائه شده است.
API Management (مدیریت API)
🔹 شامل ایمیجهای Gatewayها، مستندسازی API و ابزارهای مدیریت درخواستها است.
✅ کاربرد: کنترل ترافیک API، مدیریت درخواستها و ایجاد مستندات خودکار.
🔹 نمونهها:
kong/kong
(API Gateway قوی برای مدیریت درخواستها)swaggerapi/swagger-ui
(ابزار ایجاد مستندات API)tykio/tyk-gateway
(API Gateway قدرتمند)Content Management System (سیستمهای مدیریت محتوا)
🔹 ایمیجهای مرتبط با CMSها و ابزارهای مدیریت وبسایتها در این دسته قرار میگیرند.
✅ کاربرد: ایجاد و مدیریت وبسایتهای پویا، وبلاگها و فروشگاههای آنلاین.
🔹 نمونهها:
wordpress
(سیستم مدیریت محتوای محبوب)drupal
(پلتفرم CMS پیشرفته)ghost
(سیستم وبلاگنویسی سریع و سبک)Data Science (علم داده)
🔹 ایمیجهایی که شامل محیطهای توسعه داده، تحلیل داده و ابزارهای آماری هستند.
✅ کاربرد: پردازش داده، یادگیری ماشین و اجرای مدلهای تحلیل داده.
🔹 نمونهها:
jupyter/scipy-notebook
(محیط Jupyter Notebook برای تحلیل داده)pandas-dev/pandas
(ابزار پردازش داده Pandas)r-base
(اجرای زبان برنامهنویسی R برای آمار و تحلیل داده)Databases & Storage (پایگاههای داده و ذخیرهسازی)
🔹 شامل ایمیجهای پایگاه دادههای SQL و NoSQL و راهکارهای ذخیرهسازی است.
✅ کاربرد: نگهداری و پردازش دادهها در محیطهای عملیاتی.
🔹 نمونهها:
mysql
(پایگاه داده MySQL)mongo
(پایگاه داده NoSQL محبوب MongoDB)postgres
(پایگاه داده PostgreSQL)redis
(پایگاه داده درونحافظهای برای کشینگ)Languages & Frameworks (زبانها و فریمورکها)
🔹 ایمیجهای مرتبط با زبانهای برنامهنویسی و فریمورکهای توسعه نرمافزار در این دسته قرار دارند.
✅ کاربرد: فراهمسازی محیط اجرایی برای توسعه اپلیکیشنها.
🔹 نمونهها:
node
(محیط اجرایی Node.js)python
(زبان برنامهنویسی Python)ruby
(اجرای برنامههای Ruby)php
(محیط PHP برای توسعه وب)Integration & Delivery (یکپارچهسازی و تحویل نرمافزار)
🔹 شامل ایمیجهای CI/CD، ابزارهای تست و اتوماسیون استقرار است.
✅ کاربرد: یکپارچهسازی و استقرار خودکار نرمافزارها.
🔹 نمونهها:
jenkins
(سیستم CI/CD محبوب)gitlab/gitlab-ce
(پلتفرم DevOps یکپارچه)circleci/circleci-cli
(ابزار CI/CD برای اتوماسیون فرآیندهای توسعه)Internet of Things (اینترنت اشیا - IoT)
🔹 ایمیجهای مرتبط با مدیریت و پردازش دادههای IoT و سنسورها در این دسته قرار دارند.
✅ کاربرد: پیادهسازی و مدیریت سرویسهای IoT.
🔹 نمونهها:
eclipse-mosquitto
(پیادهسازی پروتکل MQTT برای ارتباط دستگاهها)kura/kura
(چارچوب مدیریت IoT)balena/rpi-node
(اجرای Node.js روی Raspberry Pi)Machine Learning & AI (یادگیری ماشین و هوش مصنوعی)
🔹 شامل ابزارها، فریمورکها و مدلهای هوش مصنوعی است.
✅ کاربرد: پیادهسازی، آموزش و استقرار مدلهای هوش مصنوعی.
🔹 نمونهها:
tensorflow/tensorflow
(فریمورک یادگیری ماشین TensorFlow)pytorch/pytorch
(محیط PyTorch برای یادگیری عمیق)huggingface/transformers
(مدلهای پردازش زبان طبیعی)nvidia/cuda
(شتابدهنده GPU برای اجرای مدلهای AI)Message Queues (صف پیام)
🔹 شامل ایمیجهای سیستمهای صف پیام و پردازش ناهمزمان است.
✅ کاربرد: مدیریت صفهای پیام برای سیستمهای توزیعشده.
🔹 نمونهها:
rabbitmq
(سیستم پیامرسانی مبتنی بر AMQP)kafka
(سیستم صف پیام Kafka برای پردازش دادههای حجیم)nats
(پیامرسانی سریع و سبک)Monitoring & Observability (مانیتورینگ و مشاهدهپذیری)
🔹 شامل ابزارهای جمعآوری لاگها، مانیتورینگ و مشاهدهپذیری سیستمها است.
✅ کاربرد: بررسی عملکرد سرویسها و شناسایی مشکلات.
🔹 نمونهها:
prom/prometheus
(سیستم مانیتورینگ محبوب Prometheus)grafana/grafana
(داشبوردهای گرافیکی برای مانیتورینگ)fluent/fluentd
(مدیریت و پردازش لاگها)Networking (شبکه)
🔹 شامل ابزارهای مرتبط با مدیریت شبکههای Docker و نرمافزارهای ارتباطی است.
✅ کاربرد: ایجاد و مدیریت شبکههای کانتینری.
🔹 نمونهها:
coredns/coredns
(سرور DNS برای مدیریت دامنهها)nginx
(سرور HTTP و Proxy معکوس)haproxy
(لایه تعادل بار برای سرویسهای توزیعشده)Operating Systems (سیستمعاملها)
🔹 ایمیجهای سیستمعاملهای سبک برای اجرای کانتینرها را شامل میشود.
✅ کاربرد: فراهمسازی پایهای برای اجرای نرمافزارهای دیگر.
🔹 نمونهها:
alpine
(سیستمعامل بسیار سبک)ubuntu
(یکی از محبوبترین سیستمهای پایه در Docker)debian
(سیستمعامل پایدار برای کانتینرها)Security (امنیت)
🔹 شامل ابزارهای امنیتی برای محافظت از کانتینرها و دادهها است.
✅ کاربرد: افزایش امنیت اپلیکیشنهای Docker.
🔹 نمونهها:
falco
(نظارت بر امنیت سیستمها)anchore/engine
(اسکن آسیبپذیریهای امنیتی در کانتینرها)trivy
(ابزار امنیتی برای بررسی آسیبپذیریهای Docker)Web Servers (وب سرورها)
🔹 ایمیجهای سرورهای HTTP وهاستینگ وب را شامل میشود.
✅ کاربرد: میزبانی وبسایتها و برنامههای وب.
🔹 نمونهها:
nginx
(وب سرور پرسرعت)httpd
(سرور Apache HTTP)caddy
(وب سرور مدرن با HTTPS خودکار)Web Analytics (تحلیل وب)
🔹 شامل ابزارهای تحلیل و بررسی ترافیک وب است.
✅ کاربرد: ردیابی و تحلیل رفتار کاربران در وبسایتها.
🔹 نمونهها:
matomo
(پلتفرم متنباز تحلیل وب)awstats
(ابزار آمارگیری از لاگهای وب)K3s یک توزیع سبک و کمحجم از Kubernetes است که برای محیطهای تولید و توسعه کوچک، سیستمهای IoT (اینترنت اشیاء)، و محیطهای Edge طراحی شده است. K3s توسط Rancher Labs توسعه یافته و هدف اصلی آن کاهش پیچیدگیهای Kubernetes و فراهم آوردن یک نسخه کمحجم و سریعتر از این سیستم است.
Kubernetes (K8s) یک سیستم اورکستراسیون کانتینر است که برای خودکارسازی استقرار، مقیاسپذیری، و مدیریت برنامههای کانتینری استفاده میشود. Kubernetes توسط Google توسعه یافته و در حال حاضر توسط Cloud Native Computing Foundation (CNCF) مدیریت میشود.
ویژگی | K3s | K8s |
---|---|---|
حجم | سبک و کمحجم (حدود ۴۰-۵۰٪ منابع کمتر) | بزرگ و سنگین |
نصب | نصب آسان و سریع | نصب پیچیدهتر |
وابستگیها | استفاده از SQLite بهجای etcd و حذف برخی اجزای اضافی | بهطور کامل از etcd و سایر اجزای Kubernetes استفاده میکند |
مقیاسپذیری | برای محیطهای کوچک و مقیاسپایین مناسب است | مناسب برای مقیاسپذیری بالا و محیطهای پیچیدهتر |
پشتیبانی | کمتر از Kubernetes در محیطهای تولیدی بزرگ | پشتیبانی گستردهتر در تولیدات بزرگ و پیچیده |
استفاده | مناسب برای Edge, IoT و سیستمهای با منابع محدود | مناسب برای دیتاسنترها و محیطهای تولید بزرگ |
1. Docker
Docker یک پلتفرم کامل برای توسعه، انتقال و اجرای کانتینرها است که شامل ابزارهای متعددی مانند Docker CLI، Docker Compose و Docker Engine میشود. این پلتفرم از containerd بهعنوان یک Runtime داخلی برای اجرای کانتینرها استفاده میکند.
2. Containerd
Containerd یک Runtime سطح پایین برای مدیریت چرخه حیات کانتینرها است. این پروژه از دل Docker استخراج شد و اکنون توسط بنیاد CNCF (Cloud Native Computing Foundation) توسعه داده میشود. Containerd فقط مسئول اجرای کانتینرها است و سایر ویژگیهای مدیریت کانتینر مانند شبکه و لاگگیری را به ابزارهای دیگر واگذار میکند.
3. CRI-O
CRI-O یک Runtime سبک برای اجرای کانتینرها در Kubernetes است که از استاندارد Container Runtime Interface (CRI) تبعیت میکند. این پروژه برای جایگزینی Docker در محیطهای Kubernetes طراحی شده است و بهطور مستقیم از OCI (Open Container Initiative) برای اجرای کانتینرها استفاده میکند.
شباهتها
هر سه ابزار برای اجرای کانتینرهای لینوکس استفاده میشوند و از استانداردهای OCI پشتیبانی میکنند.
داکر از Containerd بهعنوان runtime استفاده میکند و CRI-O هم مانند Containerd یک runtime است که از runtimeهای OCI مانند runc استفاده میکند.
هم CRI-O و هم Containerd مستقیماً از CRI پشتیبانی میکنند و میتوانند جایگزین Docker در Kubernetes شوند. Docker برای استفاده در Kubernetes نیاز به Dockershim داشت (که دیگر پشتیبانی نمیشود).
ویژگی | Docker | Containerd | CRI-O |
---|---|---|---|
مدیریت کامل کانتینر | بله (با ابزارهای CLI و API کامل) | خیر (فقط یک Runtime) | خیر (فقط برای Kubernetes طراحی شده) |
ارتباط مستقیم با Kubernetes | نیاز به Dockershim (که حذف شده است) | بله (پشتیبانی از CRI) | بله (پشتیبانی مستقیم از CRI) |
سادگی و سبکی | سنگینتر، شامل ابزارهای اضافی | سبکتر از Docker | سبکترین گزینه |
استانداردسازی توسط OCI | از OCI پشتیبانی میکند اما کاملاً مستقل نیست | بله، کاملاً منطبق با OCI | بله، منطبق بر OCI |
کاربرد اصلی | توسعه و اجرای کانتینرها | Runtime سطح پایین برای اجرا | جایگزین Docker در Kubernetes |
مدیریت ایمیجها | بله (Docker Registry) | بله (با plugins) | بله (اما بهصورت محدود) |
در خط فرمان |
Docker | cri | crictl |
Docker بهترین گزینه برای توسعه و CI/CD
Containerd یک Runtime سبک برای اجرا و مدیریت کانتینرها
CRI-O در محیط Kubernetes یک Runtime بهینه و استاندارد
docker
، cri
و crictl
در خط فرمانهر یک از این ابزارها برای مدیریت و اجرای کانتینرها استفاده میشوند، اما در زمینههای مختلف کاربرد دارند:
docker
)🔹 ابزار اصلی خط فرمان برای کار با Docker
🔹 دارای دستورات متنوع برای ایجاد، اجرا، مدیریت و حذف کانتینرها و ایمیجها
🔹 مثالها:
# لیست کانتینرهای در حال اجرا
docker ps
# اجرای یک کانتینر جدید
docker run -d --name mycontainer nginx
# حذف یک کانتینر
docker rm mycontainer
🔹 مناسب برای: توسعهدهندگان و مدیران سیستم که با Docker کار میکنند.
🔹 یک استاندارد است توسط Kubernetes برای تعامل با Runtimeهای کانتینر مانند containerd
و CRI-O
استفاده میشود. Kubernetes مستقیماً با CRI تعامل دارد و خودش دستورات CLI ندارد.
🔹برای مدیریت CRI باید از crictl
استفاده نمود
🔹 ابزار CLI برای مدیریت کانتینرهای اجرا شده توسط CRI Runtime (مثل containerd
و CRI-O
)
🔹 جایگزین docker
در محیطهای Kubernetes است.
🔹 مثالها:
# لیست کانتینرهای در حال اجرا (مشابه `docker ps`)
crictl ps
# اجرای یک کانتینر جدید
crictl runp pod-config.json
# دریافت اطلاعات یک ایمیج
crictl inspecti nginx
🔹 مناسب برای: مدیران Kubernetes که میخواهند بدون Docker، مستقیماً با containerd
یا CRI-O
کار کنند.
ابزار | کاربرد | CLI اختصاصی | برای Kubernetes؟ |
---|---|---|---|
docker |
مدیریت کانتینرها در Docker | بله (docker ) |
بله (اما دیگر در Kubernetes استفاده نمیشود) |
CRI |
استاندارد API برای Runtimeهای کانتینر | خیر | بله |
crictl |
مدیریت کانتینرها در containerd و CRI-O |
بله (crictl ) |
بله (مناسب برای Kubernetes) |
Kata Containers |
بله، علاوه بر containerd
و CRI-O
، گزینههای دیگری نیز برای مدیریت و اجرای کانتینرها در دسترس هستند. برخی از مهمترین آنها عبارتند از:
جایگزین سبک برای Docker
بدون نیاز به Daemon (بدون dockerd
)
امنیت بالاتر با rootless execution (اجرای بدون نیاز به کاربر root)
سازگار با OCI و docker
CLI (تا حدی)
🔹 نصب در Ubuntu/Debian:
sudo apt update && sudo apt install -y podman
🔹 مثال اجرا:
podman run -d --name mycontainer nginx
مناسب برای سیستمهایی که نمیخواهند از Docker استفاده کنند و به امنیت بیشتری نیاز دارند.
- ترکیب امنیت ماشینهای مجازی (VM) با سرعت کانتینرها
- اجرای کانتینرها در VMهای سبک و جداگانه
- ایدهآل برای محیطهایی که امنیت بالا اهمیت دارد
🔹 نصب در Ubuntu/Debian:
sudo apt install -y kata-runtime
مناسب برای سازمانهایی که نیاز به ایزولهسازی بیشتر از سطح استاندارد runc
دارند.
ویژگی | containerd |
CRI-O |
Podman |
Kata Containers |
---|---|---|---|---|
پشتیبانی از Kubernetes | بله | بله | خیر | بله |
نیاز به daemon | بله | بله | خیر | بله |
سازگاری با Docker | بله | خیر | بله (تا حدی) | خیر |
امنیت و ایزولهسازی بالا | متوسط | متوسط | بالا (rootless) | بسیار بالا |
سرعت و کارایی | بالا | بالا | بالا | متوسط |
CRI-O
یا containerd
بهترین گزینهها هستند.Podman
یک انتخاب عالی است.Kata Containers
را بررسی کنید.Firecracker
مناسبترین گزینه است.docker
CLI مناسب است.crictl
را جایگزین docker
کنید.containerd
یا CRI-O
است crictl
گزینه بهتری استسی مورد از پرکاربردترین منابع در Kubernetes عبارتند از:
Pods (po) - اصلیترین واحد اجرایی در Kubernetes.
Deployments (deploy) - مدیریت توزیع و بهروزرسانی خودکار Pods.
Services (svc) - مدیریت دسترسی به Pods و ایجاد یک لایه شبکهای پایدار.
ConfigMaps (cm) - مدیریت تنظیمات کانتینرها.
Secrets - ذخیرهسازی امن اطلاعات حساس.
Namespaces (ns) - جداسازی منابع برای مدیریت بهتر.
Nodes (no) - نمایش وضعیت گرههای خوشه.
PersistentVolumeClaims (pvc) - درخواست فضاهای ذخیرهسازی پایدار.
PersistentVolumes (pv) - مدیریت منابع ذخیرهسازی پایدار.
ReplicaSets (rs) - تضمین اجرای تعداد مشخصی از Pods.
StatefulSets (sts) - مدیریت استقرارهای پایدار و وابسته به ترتیب.
DaemonSets (ds) - اجرای یک Pod بر روی تمام گرهها.
CronJobs (cj) - زمانبندی اجرای خودکار وظایف.
Jobs - اجرای پردازشهای یکبار مصرف.
HorizontalPodAutoscalers (hpa) - مقیاسپذیری خودکار بر اساس مصرف منابع.
Ingresses (ing) - مدیریت دسترسی خارجی به خدمات.
NetworkPolicies (netpol) - کنترل قوانین شبکه بین Pods.
ResourceQuotas (quota) - محدود کردن منابع مصرفی در Namespace.
RoleBindings - مدیریت سطوح دسترسی در Namespace.
ClusterRoles - مدیریت دسترسی در سطح خوشه.
ClusterRoleBindings - اتصال ClusterRoles به کاربران و گروهها.
ServiceAccounts (sa) - ارائه دسترسی برای Pods جهت تعامل با API.
PodDisruptionBudgets (pdb) - کنترل میزان خرابی مجاز هنگام حذف Pods.
MutatingWebhookConfigurations - تغییر خودکار منابع هنگام ایجاد.
ValidatingWebhookConfigurations - اعتبارسنجی منابع قبل از ایجاد.
APIService - مدیریت APIهای سفارشی.
StorageClasses (sc) - مدیریت انواع ذخیرهسازی پویا.
CSIDrivers - تعامل با درایورهای ذخیرهسازی خارجی.
IngressClasses - مدیریت کلاسهای Ingress برای کنترلکنندههای مختلف.
CertificatesSigningRequests (csr) - درخواست صدور گواهینامه SSL.
این منابع از رایجترین مواردی هستند که در مدیریت و بهرهبرداری از یک خوشه Kubernetes به کار میروند.
kubectl
در Kubernetes1️⃣ kubectl get
→ نمایش منابع
📌 مثال:
kubectl get all
kubectl get pods
kubectl get all -n kube-system
kubectl get all namespace
🔹 نتیجه: لیست تمام پادها در namespace فعلی را نشان میدهد.
2️⃣ kubectl delete
→ حذف منابع
📌 مثال:
kubectl delete pod my-pod
🔹 نتیجه: پاد my-pod
حذف میشود.
3️⃣ kubectl describe
→ نمایش جزئیات یک منبع
📌 مثال:
kubectl describe pod my-pod
🔹 نتیجه: اطلاعات دقیق درباره my-pod
نمایش داده میشود.
4️⃣ kubectl logs
→ دریافت لاگهای یک پاد
📌 مثال:
kubectl logs my-pod
🔹 نتیجه: لاگهای مربوط به my-pod
نمایش داده میشود.
5️⃣ kubectl exec
→ اجرای یک دستور در داخل پاد
📌 مثال:
kubectl exec -it my-pod -- bash
🔹 نتیجه: یک ترمینال داخل پاد my-pod
باز میشود.
6️⃣ kubectl apply
→ اعمال تغییرات از روی یک فایل
📌 مثال:
kubectl apply -f deployment.yaml
🔹 نتیجه: منابع تعریفشده در فایل deployment.yaml
ایجاد یا بهروزرسانی میشوند.
7️⃣ kubectl top
→ نمایش مصرف منابع (CPU/MEMORY)
📌 مثال:
kubectl top pod
🔹 نتیجه: میزان مصرف CPU و RAM پادها نمایش داده میشود.
🚀 این دستورات برای مدیریت کلاستر Kubernetes بسیار مهم هستند.
Command | Stands for | IPA Pronunciation |
---|---|---|
CRI-O | Container Runtime Interface for OpenShift | /ˌsiː ɑːr aɪ ˈoʊ/ or /ˈkraɪ.oʊ/ |
containerd | Container Daemon | /kənˈteɪnɚdiː/ |
chmod | Change Mode | /ˈtʃeɪndʒ mɒd/ (British) or /ˈtʃeɪndʒ mɑːd/ (American) |
podman | Pod Manager | /ˈpɒd.mæn/ |
runc | OCI Runtime for Running Containers | /rʌn ˈsiː/ |
Runtime | Execution Environment for Programs | /ˈrʌn.taɪm/ |
systemctl | System Control | /ˈsɪstəm ˌsiː tiː ˈɛl/ or /ˈsɪstəm kənˈtroʊl/ |
crictl | CRI Control | /ˌsiː ɑːr aɪ ˌsiː tiː ˈɛl/ |
kubectl | Kubernetes Control | /ˈkjuːb.siː.tiː.ɛl/ or /ˈkjuːb.kɛtl/ |
pwd | Print Working Directory | /piː dʌb.ljuː diː/ |
mkdir | Make Directory | /meɪk dɪˈrɛkt(ə)ri/ or /meɪk daɪˈrɛkt(ə)ri/ |
cd | Change Directory | /siː diː/ |