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

نصب داکر

ما از اوبونتو به‌عنوان بنیاد ساخت داکر استفاده می‌کنیم. اوبونتو تنها یک توزیع محبوب و فراگیر از لینوکس نیست، بلکه خود تیم داکر نیز از اوبونتو برای توسعه استفاده کرده و داکر از نسخه 12.08 روی سرورهای اوبونتو پشتیبانی می‌کند و برای سادگی از دستورات نصب اوبونتو 16.04 استفاده می‌کنیم.

آماده کردن اوبونتو برای داکر

اولین گام به‌دست آوردن ورژن مناسب کرنل و هِدِر آن است:

$ sudo apt-get install --install-recommends linux-generic-hwe-16.04

این فرآیند کمی زمان‌بر است و پس از انجام ممکن است به ریست سیستم نیاز باشد:

$ sudo reboot

یا این‌که به ارتقای دیگر پکیج‌ها نیاز باشد:

$ sudo apt-get update

$ sudo apt-get upgrade

نصب داکر در اوبونتو

نصب داکر در توزیع‌های دبیان، اوبونتو فدورا، Raspbian و CentOS با استفاده از روش اسکریپت Shell آسان است و با مراجعه به وب‌سایت get.docker.com می‌توانید آن را دانلود کنید. برای این کار باید از دستور Curl استفاده کنید. جدیدترین نسخه Curl به این صورت دریافت می‌شود:

sudo apt-get install curl

پس از نصب Curl اسکریپت ‌را نصب و اجرا کنید:

curl -s https://get.docker.com | sudo sh

پس از نصب اسکریپت متنی مشابه شکل 1 مشاهده خواهید کرد که جزئیاتی درباره نسخه داکر و اجزای سرور و کلاینت دارد.

آموزش کار با داکر: از شروع کار با داکر تا مباحث شبکه‌ای

شکل1. نصب یک اسکریپت Shell

باید درباره اضافه کردن کاربران Root نشده به نکته‌ای اشاره کرد. انجام این کار راحت است اما پیشنهاد می‌شود برای کار با داکر و دیگر عملکردها، کاربر روت نشده ایجاد کنید. 

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

$ sudo docker run -i -t ubuntu /bin/bash

در صورت موفقیت‌آمیز بودن Hostname را از طریق Command Prompt خواهید دید که به چیزی شبیه Root@216b04387924:/# تغییر یافته است. برای خارج شدن از این قسمت و هر بخشی در Shell از دستور Exit استفاده کنید.

حال یک داکر روی سرور خود دارید و با دستور زیر می‌توانید اطلاعات پایه‌ای درباره آن کسب کنید:

$ sudo docker info

خروجی دستور Docker Info تعداد کانتینرها و ایمیج‌ها را نشان می‌دهد. ممکن است این دستور خیلی طولانی باشد که در شکل 2 قسمتی از آن را مشاهده می‌کنید.

آموزش کار با داکر: از شروع کار با داکر تا مباحث شبکه‌ای

شکل 2. خروجی دستور Docker Info برای کسب اطلاعات درباره داکر نصب شده

در این قسمت اگر فایروال UFW در اوبونتو در حال اجرا است باید دستورات دیگری هم لحاظ شوند که از آن‌ها عبور می‌کنیم.

کار با ایمیج‌های داکر و کانتینرهای داکر

کاتنینرهای داکر نسبت به ماشین‌های مجازی کارایی بسیار بیشتری دارند. وقتی کانتینر یک پروسه را اجرا نمی‌کند، انگار که آن پروسه کاملا از کار افتاده و در واقع از منابع سیستم استفاده نمی‌کند. با استفاده از دستور Docker Ps می‌توان کانتینرهای فعال و غیرفعال را مشاهده کرد:

# This command will show ALL containers on the system

$ sudo docker ps -a

# This will show only RUNNING containers

$ sudo docker ps

تمام دستورات موجود را به سادگی با وارد کردن Docker مشاهده کنید. 

مطلب پیشنهادی

کوبرنتس در مقابل داکر، کدام‌یک بهتر هستند
پلتفرمی برای مدیریت کانتینرها

کانتینرهای داکر در مقابل ایمیج‌های داکر

کانتینرهای داکر از روی ایمیج‌ها ساخته می‌شوند که به Shell‌های سیستم‌عامل نیاز دارند که شامل کتابخانه‌ها و باینری‌ها برای اجرای اپلیکیشن‌ها در کانتینر است.ایمیج‌ها با برچسب‌ها نام‌گذاری می‌شوند، به خصوص متاداده که ذخیره‌سازی و استفاده از نسخه‌های مختلف ایمیج را ساده می‌کند. در حالت عادی ممکن است یک ایمیج چند برچسب مختلف داشته باشد:

ubuntu:16.04, ubuntu:xenial-20171201, ubuntu:xenial, ubuntu:latest

زمانی‌‌که عبارت Docker Pull Ubuntu وارد می‌شود، ایمیجِ اوبونتوی پیش‌فرض درخواست می‌شود که ایمیجی با برچسب lastest (آخرین) است. به‌عبارت‌دیگر، این عبارت مساوی با عبارت Docker Pull Ubuntu:latest است.

جریان کاری کانتینر و ایمیج داکر

زمانی‌که یک ایمیج را به‌کار می‌گیرید، یک کانتینر زنده از آن ساخته‌اید و این کار با دستور Docker Run انجام‌شده است. هنگام افزودن نرم‌افزار به کانتینر و اعمال تغییرات در تنظیمات با کمک دستور Docker Commit می‌توانید یک ایمیج جدید از آن تغییرات بسازید.

نکته مهم و قابل‌توجه این است که داکر تنها تغییرات را ذخیره می‌کند. زمانی‌‌که ایمیج خودتان را می‌سازید، تغییرات ایجاد شده نسبت به ایمیج پایه ذخیره می‌شود و ایمیج جدید به ایمیج اصلی پیوند می‌خورد؛ بنابراین ممکن است ایمیجی داشته باشید که به‌صورت مجازی حجم 266 مگابایتی دارد اما تنها چند مگابایت فضا را روی دیسک اشغال می‌کند.

ساخت یک ایمیج جدید از کانتینر 

برای درک بهتر این قضیه که ایمیج و کانتینر چگونه کار می‌کنند، اجازه دهید یک سرور وب آپاچی (Apache) راه‌اندازی کنیم.

شروع کار با یک کانتینر داکر جدید

در ابتدا باید یک کانتینر جدید بسازید که راه‌های کمی برای این کار وجود دارد. یک Root Shell در کانتینر جدید آغاز کنید:

$ sudo docker run -i -t --name apache_web ubuntu /bin/bash

این دستور یک کانتینر جدید با شناسه یکتا و نام Apache_Web می‌سازد. دستور بعدی apt-get است که برای نصب وب‌سرور آپاچی استفاده می‌شود:

root@d7c8f02c3c8c:/# apt-get update

root@d7c8f02c3c8c:/# apt-get install apache2

خروجی عادی Apt-Get ظاهر خواهد شد و بسته Apache2 روی کانتینر جدید شما نصب شده است. پس از کامل شدن نصب، آپاچی را اجرا و Curl را نصب کرده و نصب را تست کنید:

root@d7c8f02c3c8c:/# service apache2 start

root@d7c8f02c3c8c:/# apt-get install curl

root@d7c8f02c3c8c:/# curl http://localhost

در ادامه آخرین دستور باید صفحه آپاچی پیش‌فرض را به صورت HTML خام در کنسول ببینید. این به آن معنا است که سرور آپاچی نصب شده و در کانتینر شما اجرا می‌شود.

ساخت یک اسکریپت استارت‌آپی برای کانتینر داکر

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

یک اسکریپت بسازید؛ smartapache.sh در مسیری که مشخص کرده‌ایم: 

# You might need to first install Nano inside the container

root@d7c8f02c3c8c:/# apt-get install nano

root@d7c8f02c3c8c:/# nano /usr/local/sbin/startapache.sh

در فایل startapache.sh این خطوط را اضافه کنید:

#!/bin/bash

. /etc/apache2/envvars

/usr/sbin/apache2 -D FOREGROUND

تغییرات را اعمال و فایل را ذخیره کرده و سپس آن را اجرا کنید:

root@d7c8f02c3c8c:/# chmod +x /usr/local/sbin/startapache.sh

به‌کار گرفتن کانتینر برای ساخت یک ایمیج داکر جدید

تغییرات اعمال‌شده ر‌ا ذخیره کنید:

$ sudo docker commit apache_web local:apache_web

این کار به‌عنوان یک ایمیج جدید حکم تأیید ذخیره کانتینر و برگرداندن یک شناسه یکتا را دارد.

 

مطلب پیشنهادی

داکر؛ نهنگی‌ که به برنامه‌سازی سرعت می‌دهد!
اجرا و ساخت چندین نرم‌افزار روی یک سیستم‌عامل

پایه‌های شبکه‌ای داکر

حال ایمیج خود را دارید و می‌توانید کانتینر خود را راه‌اندازی کنید. پس از نصب داکر سه شبکه مجازی ایجاد می‌شود که ممکن است توسط کانتینرهای داکر استفاده شوند:

  • Bridge: شبکه‌ای که کانتینرها به صورت پیش‌فرض به آن متصل می‌شوند. Bridge Network به کانتینرها اجازه می‌دهد، به‌صورت مستقیم با یکدیگر صحبت کنند، نه با سیستم Host.
  • Host: شبکه‌ای که به کانتینرها اجازه می‌دهد توسط host مستقیم دیده شوند.
  • None: شبکه‌ای خالی است و کانتینری که به این شبکه متصل شده چیزی جز خودش را نمی‌تواند ببیند.

زمانی‌‌که کانتینر را اجرا می‌کنید و نیاز است که با دیگر کانتینرها یا جهان بیرونی ارتباط برقرار کنید، باید به‌صورت دستی پورت‌ها را از آن کانتینر به Host نگاشت کنید. در ادامه مثالی که ذکر کردیم، می‌توانید هنگام اجرای کانتینر، این کار را در خط فرمان انجام دهید:

$ sudo docker run -d -p 8080:80 --name apache local:apache_web /usr/local/sbin/startapache.sh

سوئیچ –p برای نگاشت پورت است. در اینجا پورت 8080 به Host با پورت 80 نگاشت شد. –name به شما اجازه می‌دهد تا یک نام برای کانتینر انتخاب کنید و البته اختیاری است. 

می‌توان وضعیت کانتینر و نگاشت TCP را با دستور Docker Ps مشاهده کرد. همچنین با دستور Docker Port جستجو در نگاشت شبکه ممکن خواهد بود:

$ sudo docker port apache 80

0.0.0.0:8080

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

کانتینرهای داکر یک فناوری مشخص از لینوکس هستند و اما می‌توانید به‌راحتی آن را در سیستم‌عامل Mac یا ویندوز (با استفاده از مجازی‌سازی) به‌کار گیرید. شرکت داکر نسخه‌هایی را منتشر کرده که در محیط سیستم‌عامل‌ها اجرا شوند. طریقه کار آن همانند چیزی است که بررسی کردیم و خط فرمانی مشابه با لینوکس وجود دارد. نصب آن‌ها شبیه سایر اپلیکیشن‌ها است و آن‌ها از یک هایپروایزر استفاده می‌کنند؛ Xhyve برای مک و Hyper-V برای ویندوز. 

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

آموزش کار با داکر: از شروع کار با داکر تا مباحث شبکه‌ای

شکل3. نسخه دسکتاپ و گرافیکی داکر برای کنترل تعاملات بین داکر و host

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟