احمد رفیعی
احمد رفیعی
خواندن ۱۱ دقیقه·۶ ماه پیش

در مسیر دواپس اینبار: دور و بری های داکر (قسمت هفتم)

معرفی ابزارهای کنار داکر:

توی این پست میخوایم در مورد ابزارهای جانبی که اومدن برای کار کردن با داکر رو معرفی کنیم و ببینیم هرکدومشون توی چه مساله‌ای بهمون کمک میکنه.

خب یه مروری کنیم پست‌های قبلی رو:

توصیه می‌کنم که حتما این پست‌ها رو هم مطالعه کنید. بریم که ادامه بدیم.


Docker Toolbox
Docker Toolbox

Docker Toolbox:

ابزاری برای نصب راحت داکر به همراه مواردی که لازم می‌شه بر روی کامپیوتر شما که برای ویندوز و مک در دسترس هست. میتونید ابزارهایی مثل Kitematic , VirtualBox رو هم با اون نصب کنید. البته دیگه استفاده ازش قدیمی شده و با حضور docker desktop به راحتی می‌تونید با استفاده از آن تمام مواردی که لازم هست رو روی سیستم‌عامل خودتون داشته باشید.


Docker Desktop
Docker Desktop

Docker Desktop:

داکر دسکتاپ ابزار قدرتمندی هست برای بیلد و آماده کردن اپلیکیشن هاتون برای پروداکشن و کوبرنتیز و سوآرم که با هر فریم‌ورک و زبانی برنامه نویسی و پلتفرمی کار می‌کند. داکر دسکتاپ برای ویندوز و مک و حتی لینوکس در دسترس هست. با استفاده از داکر دسکتاپ شما یه داشبورد هم خواهید داشت که باهاش می‌تونید کانتینرها و داکر خودتون رو مدیریت کنید.


Kitematic
Kitematic

Kitematic:

یه ابزار که محیط کاربری گرافیکی برای کار با داکر به ما میده و نصب سریع و آسونی داره و با داکر هاب هم به خوبی یکپارچه میشه و تجربه نزدیک و مشابهی به کامند لاین داکر رو بهتون میده. کیتماتیک اینترفیس ساده‌ای داره اما یه اپلیکیشن تحت وب نیست. دقیقا چون دسکتاپ هست ما نیاز داریم که حتما دسکتاپ داشته باشیم تا ازش بتونیم استفاده کنیم و نمی‌تونیم روی سرور داشته باشیمش. البته راه‌حل‌هایی داره ولی خوب دردسر داره.


Portainer
Portainer

Portainer:

یک ابزار تحت وب اوپن سورس که بهمون محیط کاربری گرافیکی میده و میتونه به نود های ریموت هم وصل بشه و از سوآرم هم پشتیبانی میکنه. پورتینر رو میتونیم به عنوان یه کانتینر بالا بیاریم و نصب آسونی داره. تمام نیازهای ما برای یک رابط کاربری گرافیکی رو کامل داره و بهترین گزینه برای استفاده در زمان Swarm هست. از نکات دیگه‌ی استفاده‌ی این ابزار اینه که چون دسترسی کامل به سرورها و سرویس‌های ما داره باید خیلی مراقبت کنیم که اطلاعات کاربری آن لیک نشه و در اختیار دیگران قرار نگیره.


Docker Machine
Docker Machine

Docker Machine:

داکر ماشین ابزاریه که بهمون این امکان رو میده که انجین داکر رو روی ماشین مجازی داشته باشیم و با استفاده از کامندهای داکر ماشین بتونیم اون ماشین مجازی و داکر رو کنترل کنیم. به صورت کلی زمانی که نیاز داریم یه لینوکس خیلی مینیمال داشته باشیم که داکر روش باشه خیلی می‌تونه کمک کنه. قبلا برای داشتن داکر تو ویندوز و مک استفاده می‌شد و الان دیگه زیاد کاربرد نداره ولی اگر بخوایم یه سناریوی مثلا swarm رو تست کنیم می‌تونه خیلی بهمون کمک کنه و به راحتی برامون ماشین‌ها رو ستاپ کنه.


WSL
WSL

WSL:

مخفف Windows Subsystem for Linux هست، یه فیچر آپشنال ویندوز که بهمون این امکان رو میده تا برنامه های لینوکسی رو روی ویندوز اجرا کنیم. Wsl رو مایکروسافت با همکاری کنونیکال ساخته و یه جورایی یه لایه انطباق پذیر هست که امکان ران شدن برنامه های لینوکسی رو با Bash shell ورژن ویندوز ۱۰ میده. باهاش نمیشه برنامه های لینوکسی که gui دارن رو بالا آورد و همچینین امکان استفاده از تمام برنامه های لینوکسی مخصوصا برنامه هایی که در سطح پایین تری با کرنل کار میکنن رو نمیده اما به نسبت دسترسی خوبی به برنامه های پایه ای لینوکس شامل ابزارهای (GNU (GNU's Not Unix مثل find ,awk ,sed , grep و … رو میده. پکیج منیجرش هم apt هست و کلا اینکه میتونه با فایل سیستم ویندوز کار کنه جالبه و واسه اونایی که اول کار کردنشون هست و میخوان روی ویندوز بمونن ولی از لینوکس هم استفاده کنن، میتونه یه شروع نسبی خوبی باشه که روی همون ویندوز داشته باشنش. نسخه دو هم داره wsl2 که به نظر میرسه سعی کرده از هسته واقعی کرنل لینوکس روی یک ماشین مجازی استفاده کنه و امکانات بیشتری رو فراهم کنه، اگه سمت استفاده ازش میرید ترجیحا wsl2 رو نصب کنید که احتمالا مشکل کمتری رو داشته باشید مخصوصا اگه در کنارش روی ویندوزتون vm هم بالا میارید.

WSL2
WSL2

نصب داکر:

داکر رو میتونیم با ابزارهایی که معرفی کردیم مثل Docker Toolbox و Docker Desktop و … نصب کنیم اما پیشنهاد من اینه که اگه روی توزیع های بر پایه دبیان هستید از پکیج منیجر apt استفاده کنید و اسکریپت get-docker هم میتونه بهتون کمک کنه. پیشنهاد میکنم حتما داکر رو نصب کنید و سعی کنید باهاش کار کنید، با یه سرچ ساده میتونید به راحتی داکر رو برای خودتون نصب کنید. یه نکته‌ی مهم اینکه روی ویندوز شما از طریق داکر دسکتاپ به دو روش می‌تونید داکر داشته باشید یکی استفاده از WSL که بهتون یه لینوکس تو ویندوز می‌ده یا با استفاده از Hyperv که براتون یه ماشین مجازی لینوکس میده که روش داکر هست.


Docker Error
Docker Error

مساله تحریم داکر و راه حل هاش:

داکر یه کمپانی آمریکایی هست و باید از قوانین این کشور پیروی کند بنابراین داکر تمام آدرس های IP مرتبط با کشورهای کوبا، ایران، کره شمالی، جمهوری کریمه، سودان و سوریه را بلاک کرده! اینکه آیا باید نام کشور ایران توی همچین لیستی باشه و عمر آدما واسه کارهای فنی به خاطر یه سری تحریم و فیلتر احمقانه و ظالمانه تلف بشه رو نمیدونم و فقط میتونم بگم که دارن خیلی ما رو اذیت می‌کنند. به خاطر همین تحریم تقریبا همیشه برای گرفتن ایمیج های داکر و معمولا برای نصب داکر هم به مشکل می‌خوریم که در ادامه یه سری راه مرسوم برای دور زدن این تحریم رو بهتون معرفی می‌کنم:

استفاده از شبکه مجازی خصوصی یا VPN:

اگه تو ایران زندگی می‌کنید براتون آشنا هست 🙂 VPN یه مفهوم کاربردی نتورکی هست که استفاده‌های مخصوص خودش رو داره اما متاسفانه ما اکثر مواقع برای دسترسی به اینترنت آزاد ازش استفاده میکنیم! به صورت کلی می‌تونیم با VPN بریم تو یه شبکه‌ی دیگه که ما ازش استفاده می‌کنیم برای این که بریم تو شبکه‌ی خارج از کشور تا دیگه تحریم و فیلتر نداشته باشیم.

استفاده از پروکسی:

که این راه هم یه جورایی شبیه روش قبل هست حالا در لایه بالاتری از شبکه که یه جورایی وقتی میبینیم کامپیوتر خودمون نمیتونه به جواب درخواستش برسه یک کامپیوتر واسط دیگه رو این وسط میذاریم و به کمک پروکسی به کامپیوترمون میگیم که سوالش رو از طریق اون واسط بپرسه و جواب رو ازش بگیره! یه جورایی شبیه همون VPN هست با این تفاوت که تو پروکسی اون نرم‌افزار یا درخواست رو می‌فرستید اما تو VPN شما دیگه کامل تو اون شبکه قرار دارید و دیگه تو شبکه‌ خودتون نیستید.

استفاده از DNS Proxy:

شرکت‌های مثل شکن یا بگذر هستن در ایران که اگر شما DNS server اونها رو استفاده کنید، می‌تونید به نوعی به سرویس‌های تحریم شده دسترسی داشته باشید. بذارید اینطوری بهتون بگم ما از DNS server می‌پرسیم hub.docker.com رو به من بگو آدرس IP ش چیه و اون آدرسی که برمی‌گردونه IP مارو تحریم کرده حالا اگه از شکن یا سرویس های مشابه استفاده کنیم وقتی ازشون میپرسیم hub.docker.com آدرسش چیه؟ بهمون دروغ میگه! و آدرس سرور دیگه رو بهمون میده که پروکسی خودشه و بعدش از طریق اون پروکسی داره درخواست می‌ده به داکر هاب و این طوری دیگه تحریم نمی‌شه. عملا درخواست ما رو به جای دیگه‌ای می‌فرسته که از طریق اون به سمت سرویس اصلی ارسال می‌شه. جالبه بدونید که حمله ای در شبکه داریم با نام DNS hijack که کاری مشابه همین رو انجام میده. تو این حمله فرد به جای آدرس درست ما رو هدایت می‌کنه به سرورهای خودش و اطلاعاتی که لازم رو داره می‌تونه دریافت کنه. البته خودتون هم می‌تونید برای سرویس‌ها و سرورهای خودتون یه DNS Proxy ایجاد کنید و به صورت هوشمندانه ازش استفاده کنید.

استفاده از رجیستری میرور:

راهی که من توصیه می‌کنم ازش استفاده کنیم Mirror Registry هست، ابزارهایی مثل Nexus و JFrog و Harbor هستن که به ما این امکان رو میدن که یک آینه از مخزن داکر رو با اونها روی سرور خودمون ایجاد کنیم و ایمیج هامون رو از سرور خودمون که بهتره توی شبکه محلی ما هم باشه، بگیریم. به این صورت تنها ما لازمه که پروکسی رو روی اون سرورها ایجاد کنیم و مسیر راحت دریافت ایمیج‌ها رو از طریق آنها انجام بدیم. مکانیزم کاری آنها به این صورت است که شما درخواست دریافت ایمیج رو به سمتش می‌فرستید و اگر داشت بهتون می‌ده و اگر نداشت می‌ره سراغ منبع اصلی و از اون می‌گیره. حالا این ابزارها هوشمند هستند و اگر نداشتن نمی‌گن که نداریم بلکه دانلود می‌کنند و در اختیار شما قرار می‌دن. البته از میرور رجیستری برای نصب داکر و سرچ آن نمی‌تونید استفاده کنید و فقط برای دانلود ایمیج کاربرد دارد.

کانتینر ران تایم چیه ؟

پلتفرم داکر خودش به عنوان به container runtime نقش ایفا نمی‌کنه. به این معنی که داکر مواردی مثل زیرساخت و شبکه و بیلد و ارکستریشن و امنیت و یه عالمه سرویس دیگه که به لایف سایکل یه اپلیکیشن توزیع شده کمک میکنن رو ارائه میده اما برای ران تایم از containerd استفاده می‌کنه. برخی از ابزارهای container runtime رو براتون میذارم:

  • Containerd
  • Cri-o
  • LXD
  • Katacontainers

کانتینر ران تایم کارش اینه که با namespace و cgroup ارتباط برقرار کنه و برامون کانتینر رو ایجاد کنه.


Docker Scout Dashboard
Docker Scout Dashboard

داکر اسکوت scout چیه ؟

ایمیج کانتینرها از لایه‌ها و پکیج‌های نرم‌افزاری تشکیل شده که می‌تونن در معرض آسیب‌پذیری‌های امنیتی باشند. داکر اسکوت راه حلی هست که توسط داکر توسعه داده شده تا به شکل فعال، به ارتقا زنجیره امنیتی نرم افزار ها کمک کنه. داکر اسکوت با آنالیز کردن ایمیج های داکر یک فهرست از کامپوننت ها با نام Software Bill Of Material یا SBOM رو که به شکل مستمر دیتابیس‌های اون از آسیب پذیری های امنیتی و نقاط ضعف امنیتی آپدیت میشن، رو بر روی ایمیج تست میکنه تا برای امنیت کانتینر هاتون بهتون کمک کنه. از داکر اسکوت میتونید با داکر دسکتاپ و داکر هاب و یا کامند لاین استفاده کنید و داشبورد گرافیکی خودش رو هم داره که کمک کننده هست.

چطوری سرویس داکرمون رو کانفیگ کنیم؟

سرویس داکر همانند سرویس‌های دیگه داخل لینوکس قابل سفارشی‌سازی و کانفیگ است. توی داکر میتونیم مواردی از قبیل گزینه های زیر رو کانفیگ کنیم.

  • Change Root Directory
  • Set Mirror Registry
  • Change Docker Subnet Range
  • Change Docker Port Bind
  • Change Docker Default Driver

برای کانفیگ کردن داکر سه تا راه وجود داره. راه اول از طریق اضافه کردن فایل کانفیگ به مسیر زیر هست.

/etc/systemd/system/docker.service.d/override.conf

که مثلا فایلی رو با نام override.conf توی این مسیر میذاریم که داخلش با فرمتی شبیه سرویس فایل هایی که برای سرویس های لینوکسی که با systemd اجراشون میکنیم، کانفیگ هامون رو مینویسیم و بعد از آن باید daemon رو ریلود کنیم و داکر رو ری‌استارت کنیم. این روش دقیقا روش کانفیگ با استفاده از systemd فایل هست که برای همه‌ی سرویس‌های لینوکس کاربرد دارد.

راه دوم برای کانفیگ کردن داکر هم از طریق تغییر کانفیگ daemon که در قالب json توی فایل etc/docker/daemon.json/ است قرار می‌دهیم. معمولا این فایل وجود نداره و باید ایجادش کنیم. برای اعمال کانفیگ‌هامون فقط لازمه تو این روش سرویس داکر رو ریستارت کنیم.

راه سوم هم استفاده از وریبل‌های محلی است که با استفاده از آنها می‌تونیم سرویس داکر رو کانفیگ کنیم.


مراقب خودتون باشید. 🌹🐳🌹



خوبه که داکرمی رو تو جاهای مختلف فالو کنید. پذیرای نظرات شما هستیم.

🫀 Follow DockerMe 🫀

🔔 Follow YouTube 🔔

📣 Follow Instagram 📣

🖇 Follow LinkedIn DockerMe🖇

🔎 Follow Linkedin Ahmad Rafiee 🔎

🕊 Follow Twitter 🕊








داکرماشین مجازینصب داکر
مشاور زیرساخت. موسس سایت آموزشی DockerMe.ir
شاید از این پست‌ها خوشتان بیاید