صفحه نخست --> بسترهای پردازش توزیع شده --> نصب و راه اندازی و پیکربندی داکر (Docker)

نصب و راه اندازی و پیکربندی داکر (Docker)

نصب و راه اندازی داکر Docker

در مبحث معرفی داکر با این تکنولوژی آشنا شدیم حال به نحوع نصب و راه اندازی آن می پردازیم. این نوع مجازی‌سازی برخلاف مجازی‌سازی معمولی، سربار (Overhead) بسیار کمی دارد و برخلاف تکنیک chroot، دو سیستم‌عامل کاملا از هم جدا هستند و همدیگر را مثل دو ماشین مجزا در شبکه می‌بینند. تنها نقطه اشتراک دو سیستم‌عامل، هسته سیستم‌عامل (لینوکس) است که در این ترکیب، هسته سیستم‌عامل بیرونی، سیستم‌عامل داخلی را هم کنترل می‌کند (لینوکس این قابلیت را به لطف cgroups و namespaceها برای مجزا کردن پروسه‌ها از همدیگر دارد).

این قابلیت سال‌هاست که در لینوکس وجود دارد  و سوال اینجاست که داکر چه چیزی به این قابلیت اضافه می‌کند؟ نسخه‌های اولیه داکر، از LXC برای مدیریت حامل‌ها استفاده می‌کردند، اما از نسخه ۹/۰ به بعد، داکر به صورت مستقیم و با کمک کتابخانه‌هایی که LXC هم از آن ها استفاده می‌کند، مدیریت حامل‌ها را انجام می‌دهد. آن چه داکر را از بقیه متمایز می‌کند، تکنیک «مدیریت لایه لایه فایل سیستم» و امکان Copy-on-write فایل سیستم است. با توجه به فلسفه «همه چیز فایل است» در سیستم‌های مبتنی بر یونیکس، برای انتقال یک سیستم‌عامل و حتی ذخیره کردن وضعیت برنامه‌های در حال اجرا، کافی است راهی برای مدیریت همه این فایل‌ها وجود داشته باشد.

هر حامل در داکر یک فایل‌سیستمِ کاملِ لینوکسی است که از چندین لایه تشکیل شده و هر لایه عبارت است از تغییرات فایل‌های لایه قبلی نسبت به لایه بعدی. داکر به جای نگه داشتن مجموع فایل‌های هرلایه، تنها فایل‌هایی را که از لایه قبلی تا لایه بعدی تغییر کرده‌اند، نگه داری می‌کند. مدیریت این لایه‌ها شبیه به سیستم‌های کنترل نسخه (بیش تر از همه git) انجام می‌شود و امکان گرفتن انشعاب، تگ کردن و برگشتن به یک لایه به‌خصوص در داکر وجود دارد. در داکر قابلیت ایجاد یک مخزن مرکزی از این لایه‌ها وجود دارد و به این ترتیب با کمک docker-registry (که خود یک پروژه متن‌باز دیگر است) امکان انتقال این حامل‌ها به راحتی فراهم می‌شود.

لایه های داکر
docker layers

هنگامی که یک نسخه از یک حامل به یک ماشین دیگر انتقال پیدا می‌کند، می‌توان تا بی‌نهایت رونوشت (بسته به منابع سخت‌افزاری آن ماشین) از آن حامل ایجاد کرد. همه حامل‌ها در ابتدا در لایه‌های فایل‌سیستم مشترک هستند اما پس از اجرا در لایه جدید به صورت مستقل خواهند بود، این اشتراک در لایه‌ها، باعث کم شدن فضای مورد استفاده می‌شود.

  • نصب داکر

نصب داکر بسیار ساده است. داکر معمولا با یک یا دو دستور ساده نصب می‌شود. برای استفاده از داکر می‌توانید به این صورت عمل کنید:

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

1
<strong>docker -d</strong>

با دسترسی کاربر ریشه، کافی است.

سپس دستورات زیر را اجرا کنید:

(این گام نیاز به اینترنت دارد و یک نسخه از اوبونتو رسمی داکر را دانلود خواهد کرد)

1
docker pull ubuntu

1
docker run -ti ubunt /bin/bash

تمام شد.

شما دستور bin/bash/ را در یک اوبونتو کاملا مستقل از سیستم خودتان اجرا کرده‌اید. اگر بیش تر کنکاش کنید متوجه چند نکته خواهید شد:

– یک کارت شبکه مجازی به صورت پُل(bridge) در سیستم شما به وجود آمده است که ارتباط شبکه‌ای شما با این حامل و همه حامل‌های روی یک ماشین را به عهده می‌گیرد.

– با این که شما در اوبونتو هستید، ولی خروجی دستور uname -a (که نسخه کرنل لینوکس شما را نشان می‌دهد) همچنان نسخه لینوکس اصلی شما را به شما نشان خواهد داد.

– شما تنها یک نسخه اجرا شده از bash را در سیستم داخلی خواهید دید. داکر هیچ سرویس، یا برنامه دیگری را اجرا نکرده است.

– هیچ گونه دسترسی به پروسه‌های بیرونی وجود ندارد، فایل سیستمِ بیرونی قابل دسترسی نیست (مگر این که شما قسمتی از آن را با حامل به اشتراک گذاشته باشید)

– از بیرون، پروسه‌های داخلی در دسترس هستند. می‌توان آن ها را دید و حتی به آن ها سیگنال Kill فرستاد، ولی هیچ راهی از داخل به بیرون نیست.

– برنامه‌ای مثل htop را در حامل نصب کنید و اجرا کنید. خواهید دید که کل CPUهای سیستم بیرونی، کل حافظه و فضای swap بیرونی شما در اختیار حامل نیز هست، یعنی اگر چندین حامل همزمان اجرا شوند، برخلاف مجازی‌سازی که از ابتدا همه منابع مورد نیازش را از سیستم جدا خواهد کرد، حامل هر زمان که لازم داشته باشد می‌تواند به منابع بیش تری دسترسی پیدا کند و هر زمان که در حالت ایده‌آل باشد می‌تواند آن منابع را رها کند. البته امکان کنترل منابع برای حامل‌ها نیز وجود دارد.

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

دیدگاه مفهومی داکر
Docker view
  • انتقال و بسته‌بندی برنامه‌ها

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

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

بعد از ساختن این حامل ها می‌توان آن را به مخازن اصلی داکر، یا مخازن اختصاصی فرستاد و آن ها را با دیگران به اشتراک گذاشت. برای جستجو در مخزن عمومی داکر می‌توان از دستور docker search استفاده کرد، مثلا برای دیدن حامل هایی که دیگران در آن MongoDB نصب کرده‌اند کافی است این گونه جستجو کنید:

1
docker search MongoDB

و بعد یکی از حامل‌های فهرست شده را (برمبنای نیاز خود) دریافت(pull) و اجرا کنید. هر چند داکر یک پروژه نسبتا جوان است اما می‌توان از آن برای بستر نصب و انتقال نرم‌افزارها استفاده کرد. ابزارهای بسیاری (مثل coreOs، سایت koding.io و docker provider برای vagrant و…) نیز برمبنای داکر ایجاد شده‌اند که هر کدام، امکانات فراوانی را به کاربران می‌دهند.

عملکرد داکر
docker functions

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *