لینوکس : دستوراتی که هر مدیر شبکه ای باید آن ها را بداند!

به عنوان یک مدیر شبکه آشنایی با دستورات لینوکس ، حتی الامکان در حد دستورات پایه، امری ضروری محسوب می شود. به همین دلیل سعی گردید تا دستورات مهمی که یک ادمین شبکه برای کار با سیستم عامل های Debian Base باید با آن ها آشنایی داشته باشد، در قالب فایلی آماده و ارائه گردد. تصویر زیر صفحه ای از صفحات این فایل است که نسخه ی کامل آن را می توانید از طریق این لینک دریافت نمایید. ادامه خواندن “لینوکس : دستوراتی که هر مدیر شبکه ای باید آن ها را بداند!”

خوش و بشی با داکر (Docker)

مبحثی که در موردش میخایم شروع به صحبت کنیم، در مورد Container ها و علی الخصوص داکر (Docker) هستش که به صورت کلی و مختصر به تعریف و توضیح کوتاهی در موردشون می پردازیم.

لازم به گفتن میدونم که بعضی از تعاریف برای سادگی به شکل دیگه ای بیان میشه و سعی میکنم زیاد ریز بینانه وارد نشم تا مبحث ویژگی فهم عمومی داشته باشه.

Container چیست؟

خب اول از همه بریم سراغ Container و ببینیم چی هست و کجا استفاده مون میشه.
به زبان خیلی ساده میشه گفت Container به گروهی از پروسس ها میگن که داخل یک فضای ایزوله شده‌ قرار گرفته‌اند (البته ما در docker سراغ این میریم که microprocess ها رو داشته باشیم و در هر کانینر یک پروسس اصلی رو اجرا کنیم). از نگاهی دیگه میشه گفتش که مدلی از مجازی سازی در لایه ی سیستم عامل هستش که هسته ی سیستم عامل این قابلیت رو به ما میده که تعدادی فضای ایزوله رو کاربر بتونه ایجاد کنه.

اینجا سؤال پیش میادش که فضای ایزوله ای که ازش اسم بردیم چی هستش؟ چه قابلیتی از سیستم عامل هستش که این ویژگی رو به ما داده؟

در سیستم عامل لینوکس، یکی از مزیت‌های هسته، Namespace هستش که منابع سیستمی رو برای ما به صورتی کاملاً مجزا جدا و شبیه سازی میکنن. مثلاً Process ID، دسترسی شبکه یا حتی فایل سیستم و یا ارتباطات داخلی پروسس ها.
پس اینطوری ما با استفاده از Namespace یک فضای ایزوله برای کارمون ایجاد کردیم.

خب، دوباره تعریف سادمون از Container رو اینجا باز گو میکنم: Container به گروهی از پروسس ها میگن که داخل یک فضای ایزوله شده قرار گرفته و هر Container میتونه قابلیت‌های Namespace رو که چندتاشون رو نام بردیم داشته باشه.

داکِر (Docker)

وقتش رسیده که بریم سراغ Docker و ببینیم نهنگ آبی و خندون داکر کی هستش و چی هست و رسالتش چیه.

هسته‌ی داکر که میتونیم بهش Docker Engine بگیم، یک نرم‌افزار متن باز هستش که روی سیستم عامل نصب میشه و به ما اجازه ی ساخت، پیاده‌سازی و مدیریت Container ها رو میده. این برنامه توسط تیم داکر و یا dotCloud نوشته شده و در اختیار من و شما قرار گرفته. Docker به ما این قابلیت رو میده که برنامه‌های خودمون رو به صورت اتوماتیک پیاده‌سازی کنیم و در قالب microprocess هر container رو دربیاریم و استفاده کنیم.

بزرگترین مزیتی که Docker بهمون ارايه میده این هستش که به سرعت میتونین کار development خودتون رو باهاش تست کنین، جلو ببرین و به حالت production برسونینش. ازین باحال تر این هستش که دیگه مثله نیازمندی های KVM، VMware و … به سیستم عجیب و غریبی نیاز نداریم؛ در واقع بسادگی میتونین روی سیستمی که دارین (که شاید RAM و CPU بالایی نداشته باشه)، داکِر رو نصب و ازش استفاده کنین.

موارد کاربردی داکر

در مورد مزیتی که اول گفتم (تسریع در Development) بگذارین یک مثال تجربیِ کوچیک بزنم:
امروز میخاستم یک اسکریپت کامپایل Nginx با OpenSSL ورژن 1.0.2j و یک سری enable/disable کردن‌های دیگه درست کنم. روال کار برای من اینجوری بودش:

  1. نصب پیش نیاز ها
  2. دانلود nginx و openssl
  3. کامپایل openssl
  4. کامپایل nginx

اگه تا به حال کامپایل انجام داده باشین، متوجه میشین بعضی وقتا حوصله سَربَر میشه، مخصوصاً زمانی که بخواین پکیج رو کم و زیاد کنین یا موقغی که بلا به دور با نقص پیش نیاز مواجه بشین.

۲ تا حالت رو با هم بررسی میکنیم. یکی حالت معمولی و روی یک سیستم عامل معمولی که میخایم یک template تر و تمیز بسازیم. و حالت بعدی استفاده از docker که میخایم یک کانتینر ازش بسازیم. ادامه خواندن “خوش و بشی با داکر (Docker)”