درک معماری Docker: راهنمای مبتدیان برای نحوه کار داکر

با استفاده از Docker، توسعهدهندگان میتوانند تمام کدها و وابستگیهای آن را در یک محیط ایزوله به نام تصویر بستهبندی کنند و سپس آن تصویر را بهعنوان یک ظرف اجرا کنند. با Docker، استقرار یک برنامه از سرور توسعه به سرور تولید بدون نگرانی در مورد مشکلات سازگاری آسان است.
جدا از دانستن دستورات اولیه داکر، در حین یادگیری داکر، لازم است بدانید که این دستورات چگونه کار می کنند. بنابراین، در این مقاله با اجزای اساسی تشکیل دهنده داکر و نحوه کار آنها آشنا خواهید شد.
ظرف داکر چیست؟
کانتینرها واحدهای سبک وزن و مستقلی هستند که شامل تمام کدها و کتابخانه های مورد نیاز برای اجرای یک برنامه کاربردی هستند. برخلاف ماشین مجازی، کانتینر داکر مستقیماً روی سیستم عامل میزبان اجرا می شود. این بدان معناست که هسته سیستم عامل میزبان را با سایر کانتینرها به اشتراک می گذارد.
کانتینرهای Docker طوری طراحی شده اند که به راحتی بین محیط های مختلف جابجا شوند بدون اینکه برنامه یا وابستگی های آن تغییر کند.
موتور داکر چیست؟
موتور داکر هسته پلت فرم داکر است. این کانتینرها، از جمله ایجاد، اجرا و حمل و نقل و کل چرخه حیات آنها را مدیریت می کند. هنگامی که Docker را نصب می کنید، موتور داکر نیز نصب می شود. این موتور فناوری مشتری-سرور اصلی است که کانتینرها را با استفاده از تمام خدمات و اجزای Dockers مدیریت می کند.
3 جزء اساسی موتور داکر
موتور داکر از سه (3) جزء اساسی تشکیل شده است، از جمله داکر دایمون، داکر API و مشتری داکر.
داکر دیمون
داکر دیمون یک جزء اساسی داکر است. این یک فرآیند پسزمینه است که به درخواستهای مشتری Docker گوش میدهد و ایجاد و اجرای کانتینرهای Docker را مدیریت میکند. داکر دیمون را می توان موتوری در نظر گرفت که محیط داکر را تامین می کند. این به توسعه دهندگان اجازه می دهد تا برنامه های کاربردی را اجرا، بسازند و مدیریت کنند.
Daemon Docker تصاویر Docker را از رجیستری ها بیرون می کشد و منابع مورد نیاز برای اجرای کانتینرهای Docker را مدیریت می کند. توابع داکر دیمون عبارتند از:
- مدیریت تصویر: Daemon Docker تصاویر را مدیریت می کند، از جمله کشیدن و ذخیره تصاویر برای ایجاد سریع و کارآمد کانتینر.
- مدیریت حجم: ماندگاری داده ها در کانتینرها به دلیل دایمون داکر امکان پذیر است. ایجاد و مدیریت حجمها را امکانپذیر میکند، که تضمین میکند دادهها هنگام حذف کانتینرها ذخیره میشوند.
- مدیریت شبکه: Daemon Docker ارتباط بین کانتینرها و دنیای خارج را مدیریت می کند. این رابط های شبکه کانتینری را مدیریت می کند و از جدا بودن آنها از یکدیگر و ماشین میزبان اطمینان می دهد.
- مدیریت کانتینر: داکر دیمون شروع، توقف و حذف کانتینرها را مدیریت می کند.
Docker API
Docker API یک رابط برنامه نویسی است که با Daemon Docker ارتباط برقرار می کند. با Docker API، میتوانید به Daemon Docker بگویید تا کارهایی مانند شروع، توقف و حذف کانتینرها یا دانلود یا آپلود تصاویر Docker را انجام دهد. Docker API شبکه ها و حجم ها را ممکن می کند و مجوزها و دسترسی های کاربر را مدیریت می کند.
همه وظایف Docker Daemon به دلیل Docker API امکان پذیر است. بدون Docker API، برقراری ارتباط با Daemon Docker به صورت برنامهنویسی امکانپذیر نخواهد بود.
مشتری داکر
این حالت اولیه برقراری ارتباط با دیمون داکر است. سرویس گیرنده Docker یک رابط خط فرمان (CLI) است که توسعه دهندگان برای تعامل با دیمون داکر از رایانه خود استفاده می کنند. وقتی کاربر از دستوری مانند a استفاده می کند docker run
، مشتری داکر این درخواست را به شبح داکر ارسال می کند.
با سرویس گیرنده Docker، توسعه دهندگان می توانند کانتینرها، تصاویر، شبکه ها و حجم های Docker را از خط فرمان مدیریت کنند. در زیر ویژگی های کلیدی کلاینت Docker آورده شده است:
-
رابط خط فرمان: سرویس گیرنده Docker یک رابط خط فرمان برای اجرای دستورات داکر در اختیار توسعه دهندگان قرار می دهد.
-
ادغام با ابزارهای توسعه: با مشتری Docker، امکان مدیریت کانتینرهای Docker از محیط های توسعه محبوب، از جمله Visual Studio Code و IntelliJ IDEA وجود دارد.
توجه داشته باشید: اگرچه ممکن است Docker API و سرویس گیرنده Docker شبیه به هم به نظر برسند، زیرا آنها ابزارهایی هستند که می توانید برای تعامل با Daemon Docker از آنها استفاده کنید، از چند جهت با هم تفاوت دارند. سرویس گیرنده Docker درخواستها را از طریق سوکت یونیکس یا یک رابط شبکه به دیمون Docker ارسال میکند، در حالی که Docker API یک رابط HTTP RESTful را روی یک شبکه نشان میدهد.
گردش کار داکر
مشتری Docker، Docker API و Daemon Docker برای یک گردش کار کامل Docker با هم کار می کنند. یک مثال عملی ایجاد یک ظرف برای مشاهده تمام این قسمت ها در عمل است.
برای ایجاد یک کانتینر Docker، مراحل زیر را دنبال کنید:
مرحله 1
با استفاده از سرویس گیرنده Docker، می توانید یک تصویر را از یک رجیستری (مانند Docker Hub) بکشید یا یک تصویر از یک Dockerfile
.
$ docker pull nginx:latest //This will pull the nginx image from Docker Hub
$ docker build -t <image_tag> . // When you run this in a directory with a Dockerfile, it builds and tags it.
گام 2
هنگامی که یک تصویر دارید، یک ظرف با استفاده از مشتری Docker ایجاد کنید.
$ docker run --name mycontainer -d nginx:latest
دستور بالا از Docker API درخواست می کند تا یک کانتینر ایجاد کند. Docker API با Daemon Docker برای ایجاد کانتینر ارتباط برقرار می کند. Daemon Docker یک رابط شبکه راه اندازی می کند که به کانتینر اجازه می دهد با سایر کانتینرها یا سیستم میزبان ارتباط برقرار کند. همچنین حجمهایی را تنظیم میکند که ظرف میتواند برای ماندگاری دادهها از آنها استفاده کند.
گام 3
میتوانید پس از اجرا با کانتینر با استفاده از سرویس گیرنده Docker با آن تعامل داشته باشید. برای این کار می توانید از دستورات زیر استفاده کنید.
$ docker exec -it mycontainer bash # Execute a command inside a running container
$ docker logs mycontainer # View the logs of a container
$ docker stop mycontainer # Stop a container
$ docker start mycontainer # Start a container
گام 4
همچنین می توانید از سرویس گیرنده Docker برای متوقف کردن یا حذف کانتینر استفاده کنید.
$ docker stop mycontainer # Stop a container
$ docker rm mycontainer # Start a container
سرویس گیرنده Docker دستورات یا درخواستهایی را به Docker API ارسال میکند، که با Daemon Docker برای ایجاد و مدیریت کانتینرها و منابع آنها ارتباط برقرار میکند.
جایگزین های Docker
اگرچه Docker اولین پلتفرمی نیست که توسعهدهندگان پلتفرم از آن برای کانتینریسازی استفاده میکنند، اما نقش مهمی در محبوبیت کانتینریسازی با فرآیندی ساده برای ایجاد کانتینرها و یک رابط کاربرپسند داشت.
با این حال، جایگزین هایی برای Docker وجود دارد، مانند زمان اجرا کانتینر مانند ظرف و گریه کن و ابزارهایی برای ساخت تصاویر مانند بیلدا.
-
ظرف: این یک زمان اجرای کانتینر منبع باز برای مدیریت چرخه حیات کانتینر است. Docker و Kubernetes می توانند از Containerd با ارائه یک API سطح بالا برای مدیریت کانتینرها و یک زمان اجرا در سطح پایین برای هماهنگی کانتینر استفاده کنند.
-
گریه کن: این یک زمان اجرا کانتینر منبع باز است که برای استفاده با Kubernetes طراحی شده است. این یک محیط سبک و پایدار برای ظروف است. همچنین با رابط زمان اجرا کانتینر Kubernetes (CRI) مطابقت دارد و ادغام با Kubernetes را آسان می کند.
-
بیلدا: این ابزار خط فرمان سبک وزن و منبع باز برای ساخت و مدیریت تصاویر کانتینر. این یک جایگزین کارآمد برای Docker است. با Buildah می توانید تصاویر را به روش های مختلف بسازید، از جمله با استفاده از a
Dockerfile
، آpodmanfile
یا با اجرای دستورات در یک ظرف. Buildah ابزاری انعطاف پذیر، امن و قدرتمند برای ساخت تصاویر کانتینر است.
نتیجه
Containerization به سرعت در حال تبدیل شدن به استاندارد جدید برای استقرار برنامه ها است و Docker در این زمینه پیشرو است. Docker با معماری قوی و انعطاف پذیر خود، ساخت، استقرار و مدیریت برنامه های کاربردی کانتینری را در هر پلتفرمی آسان می کند.
اگر به دنبال بهبود فرآیند استقرار برنامه خود هستید یا اگر می خواهید دنیای هیجان انگیز کانتینرسازی را کاوش کنید، توصیه می شود در Docker غواصی کنید و کاوش کنید.
برای کسب اطلاعات بیشتر در مورد Docker، منابع زیر را بررسی کنید: