سرفصل‌های آموزشی
آموزش کاربردی داکر
شروع کار با داکر

شروع کار با داکر

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

برای شروع کار دستور زیر را در ترمینال یا هر جای دیگری که دستورات خط فرمان را قبول می کند وارد کنید:

docker run -d -p 80:80 docker/getting-started

قبل از اینکه بخش های مختلف دستور بالا را باهم بررسی کنیم، مرورگرتان را باز کنید و آدرس localhost:80 را در آن وارد کنید تا نتیجه ی دستور بالا را مشاهده کنید.

نمایی از docker/getting-started
نمایی از docker/getting-started

در همین اولین دستور چند پرچم (Flag) را قرار دادید که در ادامه به توضیح آنها خواهیم پرداخت:

  • d-
    این پرچم، کانتینر شما را در پس زمینه اجرا می کند. به این حالت Detached گفته می­شود. در Detached Mode کانتینر اجرا می شود ولی شما همچنان به کامندلاین خودتان دسترسی دارید و می توانید در آن ادامه ی کارهایتان را انجام دهید.
  • p 80:80-
    با استفاده از این پرچم پورت 80 ماشین میزبان یا همان سیستم تان را به پورت 80 کانتینر متصل می کنید. در جلوی -p ابتدا پورت مربوط به سیستم تان، سپس : و بعد از آن پورت مربوط به کانتینر نوشته می­شود.
  • docker/getting-started
    این مقدار درواقع اسم image ای است که قصد داریم از روی آن کانتینرمان را بسازیم.

 

نکته: شما می­‌توانید پرچم هایی که تک کاراکتری هستند را جهت کوتاه تر و خواناتر شدن دستور به هم وصل کنید. به دستور زیر نگاه کنید:

docker run -dp 80:80 docker/getting-started

کانتینر چیست؟

حالا که اولین کانتینرمان را راه انداختیم بیایید بررسی کنیم که کانتینر چیست؟ به زبان ساده، یک کانتینر پردازه ای است که روی سیستم اجرا شده و از بقیه ­ی پردازه­ های روی سیستم میزبان خود، جدا می شود. داکر برای این جداسازی ها از قابلیت هایی مانند namespace ها و cgroup های کرنل استفاده می کند که از خیلی قبلتر برروی سیستم عامل لینوکس وجود داشته است.

داکر تلاش کرده است که دسترسی به این قابلیت را راحت تر کند تا بتوان از آنها به آسانی بهره برد.

Image کانتینر (container image) چیست؟

وقتی یک کانتینر را ایجاد می کنید، آن کانتینر از یک فایل سیستم ایزوله (جداشده) استفاده می کند. این فایل سیستم اختصاصی و سفارشی سازی شده، توسط Image محیا شده است. از آنجایی که image حاوی فایل سیستم کانتینر است، باید حاوی همه­ ی چیزهایی باشد که برای اجرای برنامه نیاز است. مانند همه ی وابستگی ها، تنظیمات، کدها، فایل های باینری و ... . یک image همچنین حاوی تنظیمات دیگری از جمله متغیرهای محیطی (Environment Variables)، یک دستور پیش فرض برای اجرا و اطلاعات اضافه ی دیگری برای کانتینر است.

در آینده، درباره ی image ها موضوعات عمیق­ تری مانند لایه بندی ­ها، best practice ها (بهترین شیوه های آزموده شده) و ... را بررسی می کنیم.

اگر شما با chroot آشنا هستید، اینطور فکر کنید که یک کانتینر نسخه ی توسعه یافته ای از chroot است. فایل سیستم به صورت ساده از image می ­آید. اما، یک کانتینر جداسازی های اضافه ای را انجام می­دهد که وقتی از chroot استفاده می کنید برایتان ممکن نیست.

به زبان ساده برای افرادی که با chroot آشنایی ندارند باید بگویم که chroot می تواند برروی سیستم عامل های UNIX کاری کند تا مسیر Root برای پردازه ای که همینک در حال اجراست و فرزندانش تغییر کند. برنامه ای که در چنین شرایطی اجرا می شود دیگر نمی تواند به مسیرها، پوشه ها و فایل های خارج از این مسیر و درخت فایل هایی که برایش درست شده است دسترسی داشته باشد. به این محیط ساخته شده اصطلاحا chroot jail یا زندان chroot هم می گویند.

online-support-icon