دقیق ترین تعریف داکر چیست؟
داکر (Docker) یک پلتفرم متن باز (open source) است که بر مبنای سیستم عامل لینوکس راهاندازی شده است. داکر و کارکرد آن یکی از مفاهیم پایهای در زمینهٔ توسعه نرمافزاها و DevOps است. برای آگاهی بیشتر از مفهوم «داکر چیست؟» میتوان گفت داکر، زیر ساختی است که ایجاد، پیاده سازی و اجرای برنامهها را با استفاده از فرآیند Container بسیار ساده میکند.
فهرست مطالب
تاریخچهٔ داکر
چرا داکر Docker اهمیت یافته است؟
زبان برنامه نویسی داکر
کانتینر چیست؟
مهم ترین کاربرد کانتینر
داکر چند کانتینر را اجرا میکند؟
اصطلاحات داکر که بهتر است بدانید!
تاریخچهٔ پیدایش داکر از آغاز تا کنون
اولین نسخه از داکر در سال ۲۰۱۳ میلادی (۱۳۹۲ خورشیدی) منتشر شد.
با اینکه داکر در شروع کار برای لینوکس ساخته شده بود، اما امروزه به خوبی در ویندوز و Mac OS هم قابل اجراست.
چرا داکر Docker اهمیت یافته و آیا از داکر استفاده کنیم؟
همانطور که گفتیم هدف داکر اجرای برنامهها در یک محیط ایزوله و جدا از هم است. برای اینکه فعالیت آنها بر روی یکدیگر تاثیر نداشته و بدون کاهش عمل کرد، جداگانه به انجام کار خود بپردازند.
برای این هدف، داکر اپلیکیشنهای بسته بندی شده ایجاد میکند که به آنها کانتینر (نگهدارنده | Container) گفته میشود. بنابراین داکر بدون کانتینر معنا نخواهد داشت.
داکر، به توسعه دهندگان کمک میکند تا با استفاده از قابلیت مجازی سازی در سطح سیستمعامل، نرمافزارها را در قالب بستههایی با عنوان «کانتینر» اجرا کند.
در نتیجه کانتینرها فرآیند توسعه و ارائهٔ برنامههای کاربردی در سیستم عاملهای مختلف را در یک ترکیب ایمن، آسانترمیکنند و نقش بسیار موثری در اهمیت و کاربرد داکر Docker دارند.
توسعه دهندگان این امکان را دارند که کانتینرها را بدون استفاده از Docker و تنها با قابلیتهای موجود در سرور لینوکس و سایر سیستمعاملها ایجاد کنند. اما با استفاده از داکر میتوان یک اپلیکیشن و متعلقات آن را در یک نگهدارنده مجازی اجرا کرد. به همین دلیل استفاده از Docker برای ساخت کانتینرها سریعتر، آسانتر و ایمنتر خواهد بود.
با وجود این تکنولوژی جدید قطعا میخواهید آن را نصب و اجرا کنید. برای نصب آسان داکر میتوانید از این دستورالعملها استفاده کنید.
زبان برنامه نویسی داکر چیست؟
داکر Docker با استفاده از زبان برنامه نویسی GO توسعه داده شده است. زبان برنامه نویسی Go ، یک زبان برنامه نویسی توسعه یافته توسط گوگل است که با زبان برنامه نویسی C شباهتهای بسیاری دارد
بهترین تعریف کانتینر (Container) چیست؟
همانطور که دانستیم داکر Docker، نرمافزارها را در واحدهای استانداردی با نام کانتینر قرار میدهد. کانتینرها نوعی از مجازیسازی سیستمعامل هستند. اگر با مفهوم ماشین مجازی آشنا باشید، فهم کانتینر ساده تر خواهد شد.
در واقع Container، جایگزین مناسبی برای ماشینهای مجازی است. کانتینر با جداسازی محیطهای اجرایی و به اشتراک گذاری هستهٔ سیستم عامل، حجم فضای اشغالی را در حد مگابایت کاهش داده و نسبت به ماشینهای مجازی از منابع کمتری استفاده میکند. همینطور برخلاف ماشینهای مجازی که برای اجرا نیاز به زمان نسبتا زیادی دارند، Container ها بلافاصله اجرا میشوند.
در مجموع، میتوان گفت کانتینرها تمامی عملکردها و مزایای ماشینهای مجازی را دارند؛ از جمله موارد زیر:
قابلیت جداسازی برنامه
مقیاس پذیری
مقرون به صرفه بودن
مهم ترین کاربرد کانتینر
از یک کانتینر به تنهایی ممکن است برای اجرای هر چیزی، از میکروسرویسهای کوچک یا فرایندهای نرمافزاری گرفته تا برنامهٔ بزرگتر، استفاده شود.
با اینحال، کانتینرها درمقایسه با ماشین مجازی یا سرور مجازی، حاوی تصویر سیستمعامل (OS image) نیستند. این موضوع باعث کاهش حجم کانتینرها شده و علاوه بر انتقال سادهتر، هزینههای اجرایی کمتری نیز به همراه دارد.
کانتینرها تمام آن چیزی که نرمافزار برای اجرا نیاز دارد، مانند کتابخانهها، کدهای باینری، ابزارهای سیستم و کدها را درون خود دارند تا برنامهها با سرعت و امنیت بیشتری به اجرا در آیند.
کانتینرها با ارائهٔ یک زیرساخت سبک و پایدار برای بسته بندی و استقرار برنامهها، مشکل عدم اجرای صحیح برنامه هنگام انتقال از محیطی به محیط دیگر را برطرف میکنند. به این ترتیب، کانتینرها این امکان را به توسعه دهندگان و متخصصان فناوری اطلاعات میدهند تا برنامههای کاربردی مورد نظر خود را در محیطهای مختلف با کمترین میزان تغییر یا حتی بدون تغییر مستقر کنند.
داکر چند کانتینر را اجرا میکند؟
با استفاده از Docker میتوان حدود هزار کانتینر را روی یک هاست ده گیگابایتی با هارد دیسک خالی و دردسترس اجرا کرد.
اما در استقرار برنامههای بزرگتر، ممکن است لازم باشد چندین کانتینر بهصورت دستهای بهکار گرفته شوند. چنین شبکههای بزرگی را معمولاً ارکستراتورهای کانتینری مانند Kubernetes مدیریت میکند.
اصطلاحات Docker
داکر فایل – Docker File
هر کانتینر داکر با یک فایل متنی ساده شروع میشود که حاوی دستورالعملهای لازم برای چگونگی ساخت تصویر(image) کانتینر است. بنابراین فایل داکر( DockerFile) فرایند ایجاد تصویر Docker را خودکار میکند. در واقع این فایل، لیستی از دستورات رابط خط فرمان (CLI) است که Docker Engine برای جمع آوری تصویر، اجرا خواهد کرد.
تصویر داکر- Docker images
Docker Image یا تصاویر داکر یک Read-Only Template حاوی دستوراتی برای ساخت یک کانتینر داکر است. به زبان ساده یک Image، حاوی کد منبع برای برنامههای اجرایی و همچنین تمام ابزارها، کتابخانهها و نیازمندیهایی است که در کد برنامه باید به عنوان یک بستر اجرایی شوند.
Docker image ها در زمان اجرا تبدیل به کانتینر شده و روی Docker engine اجرا میشوند. امروزه Image ها برای هر دو نوعِ اپلیکیشنهای بر پایهٔ لینوکس و ویندوز در دسترس هستند.
داکر دسکتاپ – Desktop Docker
Docker Desktop ، یک برنامه کاربردی برای مک یا ویندوز است که شامل Docker Engine، Docker CLI client ، Docker Compose، Kubernetes و موارد دیگر است. همچنین دسترسی به Docker Hub را نیز از این راه ممکن میکند.
DOCKER Daemon – داکر دیمن
Docker daemon سرویسی است که تصاویر Docker را با استفاده از دستورات کاربران ایجاد و مدیریت میکند. در اصل Docker daemon به عنوان مرکز کنترل اجرای Docker عمل میکند.
سروری که Docker daemon بر روی آن اجرا میشود داکر میزبان Docker host نامیده میشود.
Docker registry – رجیستری داکر
یک رجیستری داکر یک سیستم ذخیره سازی و توزیع منبع باز open-source مقیاس پذیر برای تصاویر داکر است. رجیستری داکر شما را قادر میسازد تا نسخههای تصویر را در منابع خود با استفاده از برچسب زدن شناسایی کنید. این کار با استفاده از git، یک ابزار کنترل نسخه انجام میشود.
افزونههای داکر-Docker plugins
پلاگینهای Docker میتواند برای ایجاد یک داکر کاربردی به کار گرفته شود. تعدادی از پلاگینهای Docker در سیستم پلاگین Docker Engine قرار داده شده اند و پلاگینهای شخصی سازی شده نیز میتوانند بر روی آن بارگذاری شوند.