Cloudbaaz
رفتن به کانال در Telegram
سلام رفقا من حسینم تو این کانال جزوه ها ویدیو ها و آموزش هایی که خودم ازشون استفاده میکنم رو در خصوص تخصص devops و cloud با شما به اشتراک میزارم. امیدوارم کمکتون کنه🙏🌷
نمایش بیشترکشور مشخص نشده استدسته بندی مشخص نشده است
299
مشترکین
+124 ساعت
+67 روز
+2830 روز
آرشیو پست ها
299
یه جزوه خلاصه در خصوص اینکه puppet چیه و چطور کار میکنه...
برای اینکه بدونید تو کدوم دسته قرار میگیره میشه جز دسته configuration management ها میشه مثه Ansible...
#puppet
#devops
299
🐳 Docker Volumes؛ اطلاعات کانتینرها کجا ذخیره میشن؟
یکی از چیزایی که اول کار با Docker ممکنه آدم رو به دردسر بندازه، بحث ذخیره اطلاعاته.
فرض کن داخل یه Container دیتابیس داری و کلی اطلاعات هم داخلش ذخیره کردی. حالا Container رو حذف میکنی...
خب، اگه اطلاعات رو جای درستی ذخیره نکرده باشی، اطلاعاتت هم همراه Container میپره!
اینجاست که Volume به کارمون میاد.
---
### Volume چیه؟
Volume در واقع یه فضای ذخیرهسازی جدا از Container هست.
یعنی اطلاعاتت به خود Container وابسته نیست.
مثلاً اگه این Container رو حذف کنیم:
docker rm my-container
اطلاعاتی که داخل Volume ذخیره شده همچنان باقی میمونه.
پس خیلی ساده:
Container = اجرای برنامه
Volume = نگهداری اطلاعات
---
### ساخت Volume
برای ساخت Volume میتونیم از این دستور استفاده کنیم:
docker volume create my-data
برای دیدن Volumeهایی که داریم:
docker volume ls
و برای دیدن جزئیات یک Volume:
docker volume inspect my-data
---
### وصل کردن Volume به Container
فرض کنیم میخوایم Nginx اجرا کنیم و یک Volume به مسیر /usr/share/nginx/html وصل کنیم:
docker run -d \
--name web \
-v my-data:/usr/share/nginx/html \
nginx
از این به بعد هر اطلاعاتی که داخل این مسیر ذخیره بشه، داخل Volume قرار میگیره.
حالا حتی اگه Container رو حذف کنیم:
docker rm -f web
Volume همچنان سر جاشه.
میتونیم یک Container جدید بسازیم و دوباره همون Volume رو بهش وصل کنیم:
docker run -d \
--name web \
-v my-data:/usr/share/nginx/html \
nginx
و اطلاعات قبلی رو داشته باشیم.
---
### Bind Mount چیه؟
یه روش دیگه برای نگهداری اطلاعات، Bind Mount هست.
اینجا بهجای اینکه Docker خودش محل ذخیره اطلاعات رو مدیریت کنه، یک مسیر مشخص از Host رو به Container وصل میکنیم.
مثلاً:
docker run -d \
-v /home/user/app:/app \
nginx
یعنی:
Host Container
/home/user/app ──────> /app
هر تغییری که روی /home/user/app انجام بدی، داخل /app هم دیده میشه.
---
### Volume یا Bind Mount؟
معمولاً Volume انتخاب بهتریه وقتی که:
* اطلاعات Database رو نگه میداری
* برنامهات روی Production اجرا میشه
* میخوای Docker مدیریت Storage رو انجام بده
اما Bind Mount بیشتر برای Development کاربرد داره؛ مثلاً وقتی Source Code پروژه روی سیستم خودته و میخوای تغییراتش رو مستقیماً داخل Container ببینی.
---
### یک مثال واقعی با MySQL
فرض کن MySQL رو اینطوری اجرا کنیم:
docker run -d \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-v mysql-data:/var/lib/mysql \
mysql
اینجا اطلاعات MySQL داخل Volume به اسم mysql-data ذخیره میشه.
حالا اگر Container رو حذف کنیم:
docker rm -f mysql
اطلاعات Database از بین نمیره، چون اطلاعات روی Volume بوده.
---
### یک نکته مهم
Volume داشتن به معنی Backup داشتن نیست!
ممکنه Volume داشته باشی ولی اگر Disk خراب بشه یا خود Volume رو اشتباهی حذف کنی، اطلاعاتت رو از دست بدی.
پس این دو تا رو با هم قاطی نکن:
Persistent Storage ≠ Backup
برای محیط Production باید برای Volumeها هم یک برنامه Backup مناسب داشته باشیم.
و یه قانون مهم:
> اطلاعات مهمت رو فقط داخل Filesystem خود Container نگه ندار؛ چون Container ممکنه هر لحظه حذف بشه.
#Docker #DevOps #Container #DockerVolume #Linux #Cloud #Infrastructure
299
Repost from LPICFarsi | Linux & DevOps Academy
🚨 وقتی برنامه به اینترنت وصل نمیشود، همیشه مشکل از Firewall نیست!
یکی از اشتباهات رایج در عیبیابی شبکه این است که سریع سراغ Firewall، Route یا تنظیمات برنامه میرویم؛ در حالی که ممکن است مشکل دقیقاً در مسیر حرکت Packetها باشد.
😎بیایید یک سناریوی واقعی را بررسی کنیم:
فرض کنید روی یک سرور لینوکسی این دستور را اجرا میکنید:
curl https://api.example.com
اما بعد از چند ثانیه با خطای زیر مواجه میشوید:
Connection timed outیعنی برنامه نتوانسته ارتباط HTTPS را برقرار کند. 😳در این لحظه معمولاً مدیر سیستم شروع به بررسی موارد زیر میکند: 🔥 Firewall 🛣 Routing Table 🔐 Security Group ⚙ Application اما اگر همه چیز ظاهراً درست باشد، چطور بفهمیم واقعاً چه اتفاقی برای بستههای شبکه افتاده است؟ اینجاست که ابزار قدرتمند tcpdump وارد میشود. 🧠 ابزار tcpdump چیست؟ برنامهtcpdump یک Packet Analyzer در لینوکس است که به شما اجازه میدهد ترافیک واقعی شبکه را مشاهده کنید. با tcpdump میتوانید بفهمید: ✅ آیا Packet از سرور خارج میشود؟ ✅ آیا مقصد پاسخ میدهد؟ ✅ آیا TCP Connection برقرار میشود؟ ✅ مشکل در شبکه است یا در خود Application؟ 🔍 مرحله اول: بررسی ارتباط HTTPS برای مشاهده درخواستهای HTTPS روی پورت 443:
sudo tcpdump -nn -i any port 443
گزینهها:
-nn
عدم تبدیل IP و Port به نام (برای مشاهده دقیقتر)
-i any
گوش دادن روی تمام Interfaceها
port 443
فقط مشاهده ترافیک HTTPS
حالت اول: ارسال SYN ولی بدون پاسخ
ممکن است خروجی چیزی شبیه این باشد:
192.168.1.10.51514 > 93.184.216.34.443: Flags [S]حرف: [S] یعنی سیستم شما یک درخواست TCP SYN برای شروع ارتباط ارسال کرده است. یعنی: Client ➡️ Server اما اگر هیچ پاسخی مانند: Flags [S.] دریافت نشود، یعنی مقصد جواب TCP نداده است. در این حالت احتمال مشکل در یکی از این بخشها زیاد است: ❌ Firewall ❌ ACL ❌ Security Group ❌ Routing ❌ سرویس مقصد حالت دوم: TCP Handshake موفق است اگر چنین چیزی ببینید:
93.184.216.34.443 > 192.168.1.10.51514: Flags [S.]یعنی: ✅ بستهSYN ارسال شده ✅ بستهSYN-ACK دریافت شده ✅حالت TCP Handshake کامل شده است پس شبکه سالم است. حالا دیگر مشکل احتمالاً در لایههای بالاتر است: 🔐 بخشTLS Handshake 📜 بخش Certificate ⚙بخش Application setting 📡 پروتکل ارتباطی مثلاً ممکن است: حالت Certificate منقضی شده باشد ورژنTLS Version ناسازگار باشد برنامه منتظر پاسخ اشتباه باشد 🎯 بررسی ارتباط با یک Host خاص اگر فقط ارتباط با یک سرور خاص را میخواهید بررسی کنید:
sudo tcpdump -nn -i any host 10.0.0.5
مثلاً برای بررسی ارتباط بین Application Server و Database Server بسیار کاربردی است.
🐘 بررسی اتصال PostgreSQL
فرض کنید برنامه شما به PostgreSQL متصل نمیشود:
sudo tcpdump -nn -i eth0 host 10.0.0.5 and port 5432
با این دستور میبینید:
* آیا درخواست اتصال ارسال میشود؟
* آیا Database پاسخ میدهد؟
* آیا مشکل قبل از PostgreSQL است یا داخل خود Database؟
💾 ذخیره Packetها برای تحلیل در Wireshark
گاهی لازم است ترافیک را ذخیره و بعداً بررسی کنید:
sudo tcpdump -nn -i any port 443 -w capture.pcap
فایل:
capture.pcap
را میتوانید با Wireshark باز کنید و جزئیات کامل Connection را ببینید.
📦 محدود کردن تعداد Packetها
اگر فقط تعداد مشخصی Packet نیاز دارید:
مثلاً فقط ۱۰۰ Packet:
sudo tcpdump -nn -i any port 443 -c 100
بعد از دریافت ۱۰۰ Packet، tcpdump متوقف میشود.
# ⚠️ نکته مهم
برنامه tcpdump فقط نشان میدهد چه Packetهایی در شبکه رد و بدل میشوند.
اما نمیگوید:
❌ کدام Process این Connection را ساخته است
برای پیدا کردن Process مربوطه از دستور زیر استفاده کنید:
ss -tnpمثلاً مشخص میکند: java nginx python postgres کدام برنامه Connection را ایجاد کرده است. 🧩 قدرت واقعی tcpdump در عیبیابی شبکه در چند دقیقه میتوانید پاسخ این سوالها را پیدا کنید: 1️⃣ آیا Packet اصلاً از سرور خارج شده؟ Server ➡️ Destination 2️⃣ آیا Packet خارج شده اما پاسخی برگشته؟ Request ➡️ ❌ No Response 3️⃣ آیا TCP برقرار شده ولی برنامه مشکل دارد؟ TCP OK ✅ Application Problem ❌ 💡 برای هر مدیر Linux، DevOps یا Network Engineer، یادگیری tcpdump یک مهارت ضروری است. چون به جای حدس زدن، دقیقاً میبینید در شبکه چه اتفاقی در حال رخ دادن است. @lpicfarsii
299
🐳 Docker Networking؛ کانتینرها چطور با هم حرف میزنن؟
یکی از مهمترین مفاهیم Docker، شبکه (Networking) هست. چون هر کانتینر بهصورت پیشفرض محیط ایزولهی خودش رو داره و برای ارتباط با سایر کانتینرها یا بیرون از Docker باید از شبکه استفاده کنه.
🔹 بهصورت پیشفرض چه اتفاقی میافته؟
وقتی Docker رو نصب میکنید، خودش یک شبکه به نام bridge میسازه. هر کانتینری که بدون تنظیم خاصی اجرا بشه، به همین شبکه متصل میشه.
مثلاً:
docker run -d --name web nginx
این کانتینر به شبکه bridge وصل میشه.
انواع شبکه در Docker
🌉 1. Bridge
رایجترین نوع شبکه برای اجرای کانتینرها روی یک هاست.
✅ کانتینرها میتوانند با هم ارتباط داشته باشند.
✅ برای دسترسی از بیرون باید Port Mapping انجام دهید.
مثال:
docker run -d -p 8080:80 nginx
در این مثال، پورت ۸۰ داخل کانتینر روی پورت ۸۰۸۰ سیستم شما منتشر شده است.
🌍 2. Host
در این حالت کانتینر مستقیماً از شبکه سیستمعامل استفاده میکند.
docker run --network host nginx
مزایا:
سرعت بیشتر
عدم نیاز به Port Mapping
معایب:
ایزوله نبودن شبکه
فقط روی Linux بهصورت کامل پشتیبانی میشود.
🔒 3. None
اگر نمیخواهید کانتینر هیچ ارتباط شبکهای داشته باشد:
docker run --network none nginx
این کانتینر نه اینترنت دارد و نه میتواند با سایر کانتینرها ارتباط برقرار کند.
🕸 4. User-defined Bridge
بهترین انتخاب برای اکثر پروژهها.
ابتدا شبکه را ایجاد کنید:
docker network create my-network
سپس کانتینرها را روی آن اجرا کنید:
docker run -d --name db --network my-network mysql
docker run -d --name app --network my-network nginx
مزیت مهم:
کانتینرها میتوانند با نام کانتینر همدیگر را پیدا کنند؛ مثلاً app میتواند مستقیماً به db وصل شود و دیگر نیازی به دانستن IP نیست.
چند دستور کاربردی
📌 مشاهده شبکهها:
docker network ls
📌 مشاهده جزئیات یک شبکه:
docker network inspect my-network
📌 اتصال یک کانتینر به شبکه:
docker network connect my-network app
📌 قطع اتصال:
docker network disconnect my-network app
💡 نکته مهم
در پروژههایی که چند سرویس دارید (مثل Nginx + Backend + Database)، همیشه از یک User-defined Bridge Network استفاده کنید. این کار باعث میشود:
سرویسها با نام یکدیگر را پیدا کنند.
مدیریت شبکه سادهتر شود.
امنیت و ایزولهسازی بهتر باشد.
نیاز به IP ثابت از بین برود.
#Docker299
🛑خودمونی:
با یکی از دوستام صحبت میکردم، میگفت حسین، نمیتونم کتاب یا جزوه pdf بخونم و یا اینکه تو استفاده از داکیومنت های اصلی سرویس ها مشکل دارم...
خیلی صریح بخوام بگم اگر اینکارو نکنید دقیقا نمیتونید متوجه بشید که کانسپت های اون مبحث به چه صورته...
ببینید دوره آموزشی خیلی خوبه و لازمه ولی هیچ دوره ای اندازه کتاب وراجی نمیکنه و همه چیو دقیق و مستند بهتون نمیگه...
پس حتما باید وقت بزارید سر این مطلب و بخونید با هر سختی که داره...
اگر زبانتون خوب نیست برید تو کار نترسید از بلد نبودن...
من خودم اوایل که کتاب میخوندم یه صفحه یه صفحه میخوندم و آخر صفحه کلماتی رو که بلد نبودم با مترجم ترجمه میکردم و میخوندم...
به مرور زبانتون خوب میشه، مطلب رو دقیق میفهمید و نوع ادبیات این کتاب ها براتون راحت تر از قبل میشه...
اگرم دارید داکیومنت رسمی یه سرویسی رو میخونید میتونید از extension رسمی خود google translate استفاده کنید خیلی بهتون کمک میکنه تو خونه داکیومنتا...👌🏻
گفتم یه توضیح بهتون بدم که چرا جزوه سعی میکنم بهتون بیشتر بدم...🫰🏻
299
🍀اینم جزوه مناسبه مرور مطالب لینوکسی که به درد مصاحبه میخوره...
توجه داشته باشید مصاحبه ها معمولا تجمیعی از مفاهیم و دستورات مهمه و باید مسلط باشید به تاپیک های اصلی...☝️
#Linux
#devops
299
📚 رفقا جزوه مناسب مصاحبه براتون پیدا کردم...
برای کسایی که میخوان تو پوزیشن هایی شرکت کنن که مربوط به زیرساخت های ابری و IT و دواپس یا helpdesk هستش این جزوه خیلی خیلی خلاصه و مناسبه...
مفاهیم اصلی با کانسپت های کلی برای کسایی که میخوان درک جامعی از شبکه در IT داشته باشن...
پیشنهاد مطالعه👌
#network
#devops
299
📚کتاب automating DevOps with Gitlab
مناسب برای کساییه که در حال یادگیری فرایند CI / CD با استفاده از Gitlab هستن و نیاز به یه کتاب جامع و فنی دارن...😃
#gitlab
#cicd
#devops
299
🛑کتاب Container networking از اون دست جزوه های مورد علاقه منه که کانسپت و best practice هارو بهت میده...
شما از یه کتاب فنی چی میخوای؟
خلاصه،مفید،مختصر،فنی
از docker تا K8s...
پیشنهاد مطالعه🍀
#network
#docker
#kubernetes
299
این رودمپ رو تو لینکدین دیدم ، ساده و روان و خلاصه گفته منتها به نظرم باید جای داکر و CI/CD جا به جا بشه تا شما درک بهتری از CI/CD پیدا کنید در کل ولی یه همچین رودمپی تو ذهنتون داشته باشید👌
#devops
#roadmap
299
رفقا یه نوت خفن در خصوص bash براتون پیدا کردم...
خیلی کتاب جالبیه حتما فرصت کردید یه نگاه بهش بندازید👌
#bashscript
299
☸️ ClusterIP چیه و به چه دردی میخوره؟
اگه تازه وارد دنیای Kubernetes شدی، یکی از اولین سرویسهایی که باهاش روبهرو میشی ClusterIP هست.
به زبان ساده، ClusterIP یه آدرس IP داخلی به سرویسهات میده تا پادها داخل کلاستر بتونن همدیگه رو پیدا کنن و با هم حرف بزنن.
فرض کن یه Backend و یه Database داری.
به جای اینکه Backend هر بار دنبال IP جدید دیتابیس بگرده (چون IP پادها ممکنه عوض بشه)، فقط به سرویس Database که از نوع ClusterIP هست وصل میشه. Kubernetes خودش درخواست رو به پاد درست هدایت میکنه.
✅ مزیتها:
* نیازی نیست IP پادها رو حفظ کنی.
* ارتباط بین سرویسها همیشه پایدار میمونه.
* Load Balancing بین پادها بهصورت خودکار انجام میشه.
⚠️ نکته مهم:
ClusterIP فقط از داخل کلاستر قابل دسترسه.
یعنی اگه بخوای از بیرون (مثلاً مرورگر یا اینترنت) به سرویس وصل بشی، باید از NodePort، LoadBalancer یا Ingress استفاده کنی.
اگر Kubernetes رو مثل یه شهر در نظر بگیریم، ClusterIP دقیقاً مثل شماره داخلی واحدهای یک ساختمونه؛ افراد داخل ساختمان باهاش تماس میگیرن، ولی از بیرون قابل دسترس نیست. 😉
#Kubernetes #DevOps #ClusterIP #Cloud #OpenStack #Docker #Linux
