Docker

از ویکی پارس پویش
(تفاوت بین نسخه‌ها)
پرش به: ناوبری, جستجو
 
(۶۰ ویرایش میانی توسط ۲ کاربر نشان داده نشده‌است)
سطر ۴: سطر ۴:
 
<div dir=rtl lang=fa>
 
<div dir=rtl lang=fa>
  
= Docker =
+
= '''Docker''' =
 +
 
 +
==Difference between Docker and VM==
  
'''تفاوت داکر و VM'''
 
 
، Docker هیچ سیستم عامل جدیدی ایجاد نمی کند بلکه این امکان را به بسته نرم افزاری ایجاد شده می دهد که از Kernel اصلی سیستم عامل لینوکسی که بر روی آن نصب شده است استفاده کند و در زمان انتقال نیز فقط Package نرم افزاری منتقل می شود نه ماشین مجازی ، در واقع Docker Engine یا موتور اصلی Docker جایگزین نرم افزار Hypervisor ما می شود و اینکار یعنی کارایی سیستم ما به شدت افزایش می یابد زیرا یک لایه واسط به نام Hypervisor حذف شده و نرم افزار بصورت مستقیم با هسته اصلی سیستم عامل کار میکند با این تفاوت که کاملا ایزوله شده است.
 
، Docker هیچ سیستم عامل جدیدی ایجاد نمی کند بلکه این امکان را به بسته نرم افزاری ایجاد شده می دهد که از Kernel اصلی سیستم عامل لینوکسی که بر روی آن نصب شده است استفاده کند و در زمان انتقال نیز فقط Package نرم افزاری منتقل می شود نه ماشین مجازی ، در واقع Docker Engine یا موتور اصلی Docker جایگزین نرم افزار Hypervisor ما می شود و اینکار یعنی کارایی سیستم ما به شدت افزایش می یابد زیرا یک لایه واسط به نام Hypervisor حذف شده و نرم افزار بصورت مستقیم با هسته اصلی سیستم عامل کار میکند با این تفاوت که کاملا ایزوله شده است.
 
   
 
   
 +
[[پرونده:D4.png|center]]
 +
 +
 +
 
در تصویر بالا هم در داکر و هم در ماشین مجازی دو عنصور Server، Host Os مشترک است.
 
در تصویر بالا هم در داکر و هم در ماشین مجازی دو عنصور Server، Host Os مشترک است.
 
در مرحله بعدی در ماشین مجازی یک مجازی ساز مانند Vmware، VirtualBox و در داکر نرم افزار Docker را نصب داریم. تفاوت‌ها از اینجا شروع  می‌شود که در ماشین مجازی باید یک سیستم عامل کامل را نصب و نرم افزارها را روی آن نصب کرد. ولی داکر این مرحله را ساده کرده است و یک نسخه کوچک از سیستم عامل را در خود دارد که بدون نیاز به نصب سیستم عامل‌های سنگین و پیچیده می‌توان نرم افزارها را روی آن نصب و تست کرد.
 
در مرحله بعدی در ماشین مجازی یک مجازی ساز مانند Vmware، VirtualBox و در داکر نرم افزار Docker را نصب داریم. تفاوت‌ها از اینجا شروع  می‌شود که در ماشین مجازی باید یک سیستم عامل کامل را نصب و نرم افزارها را روی آن نصب کرد. ولی داکر این مرحله را ساده کرده است و یک نسخه کوچک از سیستم عامل را در خود دارد که بدون نیاز به نصب سیستم عامل‌های سنگین و پیچیده می‌توان نرم افزارها را روی آن نصب و تست کرد.
 
هرچند می‌توان نسخه کوچکی از نسخه‌های مختلف سیستم عامل را نیز نصب کرد ولی باز هم بسیار راحت تر از سیستم ماشین‌های مجازی است. از مزایای استفاده از داکر نسبت به مجازی ساز می‌توان به موارد زیر اشاره کرد:
 
هرچند می‌توان نسخه کوچکی از نسخه‌های مختلف سیستم عامل را نیز نصب کرد ولی باز هم بسیار راحت تر از سیستم ماشین‌های مجازی است. از مزایای استفاده از داکر نسبت به مجازی ساز می‌توان به موارد زیر اشاره کرد:
 
ایجاد و حذف بسیار سریع Container ها
 
ایجاد و حذف بسیار سریع Container ها
ریستارت و خاموش کردن بسیار سریع
+
ریستارت و خاموش کردن بسیار سریعنحوه راه اندازی سرور registry hub
 
انتقال پذیری راحت و سبک
 
انتقال پذیری راحت و سبک
 
مدیریت منابع و ریسورس‌ها به صورت قدرتمند و متغیر
 
مدیریت منابع و ریسورس‌ها به صورت قدرتمند و متغیر
 
و …
 
و …
  
داکر Image:
+
'''داکر Image:'''
  
:*'''Complete Backup''' :
+
[[پرونده:D5.png]]
  
در این نوع از پشتیبان گیری به صورت کاملا از تمام پایگاه داده نسخه پشتیبان تهیه میشود .
+
در داکر Image‌ها را پس از دریافت اجرا می‌کنیم. همانطور که در بالا می‌بینید یک Base Image مانند Debian روی این داکر نصب شده است و روی آن Image‌های دیگر را نصب کرده ایم.
 +
Image‌ها پس از پایان به حالت اولیه خود باز می‌گردند چون همانطور از نام آن‌ها مشخص است تنها یک تصویری از پکیج اصلی هستند. برای حذف تغییرات Image می‌توان حالت آن‌ها را با دستورات خاصی ذخیره کرد.
  
 +
'''Docker Hub چیست؟'''
  
 +
یک سرویس اشتراک گذاری تهیه شده توسط شرکت Docker است که شامل مخزنی از image‌های آماده برای Docker است. این مخزن حاوی ده‌ها هزار برنامه و سیستم عامل است که می‌توان به آن image‌هایی را هم اضافه کرد. توجه کنید که شرکت پارس پویش دارای hub مخصوص به خود است.
  
:*'''Custom Backup''' :
+
'''Docker Container:'''
  
در این نوع از پشتیبان گیری از تمامی اطلاعات و '''table''' ها به جز '''connection log''' ‌ها نسخه پشتیبان تهیه میشود .
+
در واقع می‌توان گفت Container ظرفی است که Image‌ها را در آن اجرا می‌کنند. Container‌ها از روی Image‌ها ایجاد می‌شوند و به وظایف خود عمل می‌کنند. مثلا فرض کنید از یک Centos چند Container می‌سازیم و در هر کدام تغییرات متفاوتی اعمال می‌کنیم.
  
  
 +
''' debian Installation'''
  
:*'''hourly Backup''' :
+
برای نصب لازم است دو هارد جداگانه در نظر گرفته شود. در هارد اول میتوانید debian را نصب کرده و هارد دوم را به دایرکتوری زیر mount کنید. از شکل زیر پیروی کنید.
  
در این نوع از پشتیبان گیری تنها از '''table''' های اصلی مثل شارژها و '''credit''' کاربران نسخه پشتیبان تهیه میشود .
 
  
  
نکته : به طور کلی در تهیه نسخه پشتیبان در هیچ حالتی از '''snapshot''' ها نسخه پشتیبان تهیه نمیشود .
 
  
== Configuration Backup Service ==
+
پس از پارتیشن بندی به روش فوق, docker را نصب نمایید.
تنظیم سرویس های پشتیبان گیری به دو صورت امکان پذیر است :
+
  
:* از طریق '''Command-line'''
+
== Docker Installation==
:*  از طریق ابزار '''ibsng-tools'''
+
  
===  Command-line Configuration ===
+
برای نصب لازم است ابتدا package های مورد نیاز را نصب کنیم. برای این کار دستور زیر را وارد میکنیم:
 
+
'''Complete Backup''' :
+
 
+
تنطیمات مربوط به این مدل از پشتیبان گیری در فایل زیر صورت میگیرد :
+
  
 
</div>
 
</div>
 
<div dir=ltr lang=en>
 
<div dir=ltr lang=en>
  
   ''' /usr/local/src/tools/db/ibsng_backup/complete/config_file '''
+
   ''' apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common '''
  
 
</div>
 
</div>
  
تنظیمات مربوط به مسیر نسخه پشتیبان , تعداد نسخه های موجود تا '''rotate''' , زمان تهیه آن , دوره زمانی تهیه نسخه پشتیبان  و همچنین مسیری برای کپی کردن این نسخه خارج از سرور '''local'''  به صورت زیر ذخیره میگردد :
+
حال کلید رسمی منتشر شده از سایت docker‌ را اضافه میکنیم.
 +
 
 +
 
  
<div dir=ltr lang=en>
 
  
  ''' path_backup="/var/backups/IBSng/complete"  '''
+
Add Docker’s official GPG key:
  ''' log_file=/var/log/IBSng/ibs_backup.log    '''
+
  ''' periodic="3"  '''
+
  ''' auto_run_time_h=6  '''
+
  ''' auto_run_time_m=30  '''
+
  ''' type=monthly  '''
+
  ''' exteranl_dir=/media/backups/IBSng/complete/  '''
+
  
 
</div>
 
</div>
 
همچنین برای '''start'''  کردن این سرویس مقدار '''Enable''' را در فایل زیر وارد میکنیم :
 
 
<div dir=ltr lang=en>
 
<div dir=ltr lang=en>
''' /usr/local/src/tools/db/ibsng_backup/complete/service_status  '''
 
</div>
 
  
'''Custom Backup''' :
+
''' curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -  '''
  
تنطیمات مربوط به این مدل از پشتیبان گیری در فایل زیر صورت میگیرد :
 
 
<div dir=ltr lang=en>
 
 
  ''' /usr/local/src/tools/db/ibsng_backup/custom/config_file  '''
 
 
</div>
 
</div>
  
تنظیمات مربوط به مسیر نسخه پشتیبان , تعداد نسخه های موجود تا '''rotate''' , زمان تهیه آن , دوره زمانی تهیه نسخه پشتیبان  و همچنین مسیری برای کپی کردن این نسخه خارج از سرور '''local'''  به صورت زیر ذخیره میگردد :
+
حال repository مورد نیاز برای نصب docker را اضافه مینماییم.
  
<div dir=ltr lang=en>
 
 
  ''' path_backup="/var/backups/IBSng/custom"  '''
 
  ''' log_file=/var/log/IBSng/ibs_backup.log    '''
 
  ''' periodic="3"  '''
 
  ''' auto_run_time_h=6  '''
 
  ''' auto_run_time_m=30  '''
 
  ''' type=weekly  '''
 
  ''' exteranl_dir=/media/backups/IBSng/custom/  '''
 
  
 
</div>
 
</div>
 
همچنین برای '''start'''  کردن این سرویس مقدار '''Enable''' را در فایل زیر وارد میکنیم :
 
 
<div dir=ltr lang=en>
 
<div dir=ltr lang=en>
''' /usr/local/src/tools/db/ibsng_backup/custom/service_status  '''
 
</div>
 
  
'''hourly Backup''' :
+
''' add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian  $(lsb_release -cs) stable"  '''
  
تنطیمات مربوط به این مدل از پشتیبان گیری در فایل زیر صورت میگیرد :
 
 
<div dir=ltr lang=en>
 
  
  ''' /usr/local/src/tools/db/ibsng_backup/hourly/config_file  '''
 
 
</div>
 
</div>
  
تنظیمات مربوط به مسیر نسخه پشتیبان , تعداد نسخه های موجود تا '''rotate''' و همچنین مسیری برای کپی کردن این نسخه خارج از سرور '''local''' به صورت زیر ذخیره میگردد :
+
سپس با دستورات زیرریپوزیتوری سیستم را به روز رسانی میکنیم
 +
 
  
 
<div dir=ltr lang=en>
 
<div dir=ltr lang=en>
  
  ''' path_backup="/var/backups/IBSng/hourly"  '''
+
  ''' apt-get update '''
  ''' log_file=/var/log/IBSng/ibs_backup.log    '''
+
  ''' periodic="48" '''
+
  ''' interval=1  '''
+
  ''' exteranl_dir=/media/backups/IBSng/hourly/  '''
+
  
 
</div>
 
</div>
همچنین برای '''start'''  کردن این سرویس مقدار '''Enable''' را در فایل زیر وارد میکنیم :
 
<div dir=ltr lang=en>
 
''' /usr/local/src/tools/db/ibsng_backup/hourly/service_status  '''
 
</div>
 
  
===  ibsng-tools Configuration ===
+
سپس با دستورات زیرdocker را نصب میکنیم
  
برای راه اندازی این سرویس از طریق '''ibsng-tools''' مراحل زیر را طی میکنیم :
 
  
ابتدا فرمان '''ibsng-tools'''  را اجرا میکنیم. سپس مطابق شکل زیر گزینه '''service''' را انتخاب میکنیم :
+
<div dir=ltr lang=en>
  
[[Image:2.jpg|center]]
+
''' apt-get install docker-ce '''
  
در پنجره بعد گزینه '''backups''' ‌را انتخاب میکنیم :
+
</div>نحوه راه اندازی سرور registry hub
[[Image:5.jpg|center]]
+
در پنجره بعد گزینه '''IBSng''' ‌را انتخاب میکنیم :
+
[[Image:6.jpg|center]]
+
در پنجره بعد نوع '''backup''' مورد نظر ‌را انتخاب میکنیم :
+
[[Image:7.jpg|center]]
+
سپس برای Enable کردن سرویس گزینه '''status''' و برای تنظیم سرویس گزینه '''Configuration''' را انتخاب میکنیم :
+
[[Image:8.jpg|center]]
+
  
==  Start Backup Service ==
+
حال میتوانید docker-compose را نصب نمایید
پس از تنظیم فایل های موردنظر برای '''start''' کردن سرویس از فرمان های زیر استفاده می کنیم :
+
 
+
 
+
برای '''start''' کردن '''Complete backup'''  فرمان زیر را اجرا میکنیم :
+
  
 
<div dir=ltr lang=en>
 
<div dir=ltr lang=en>
  
  ''' ibs_backup '''
+
  curl -L https://github.com/docker/compose/releases/download/1.13.0/
 +
docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  
 
</div>
 
</div>
  
سپس صحت پشتیبان گیری  را با فرمان زیر چک میکنیم :
 
  
<div dir=ltr lang=en>
+
'''دانلود ایمیج از parspooyesh hub'''
  
  ''' cat /var/backups/IBSng/complete/pre_end  '''
+
تنظیمات سرور
  
</div>
+
همچنین فایل زیر را باز نمایید
خروجی این فایل میباست مقدار " 1 " باشد.
+
  
 +
<div dir=ltr lang=en>
  
 +
''' Vim /etc/docker/daemon.json'''
  
برای '''start''' کردن '''Custom backup'''  فرمان زیر را اجرا میکنیم :
+
</div>
  
<div dir=ltr lang=en>
+
و کد زیر را در آن اضافه نمایید
  
  '''ibs_backup_custom '''
+
<div dir=ltr lang=en>
  
 +
 +
{
 +
"insecure-registries": ["5.202.129.64:5000"]
 +
}
 +
   
 
</div>
 
</div>
سپس صحت پشتیبان گیری  را با فرمان زیر چک میکنیم :
 
  
<div dir=ltr lang=en>
+
استفاده از docker-compose برای اجرای docker ibs
 +
در فولدر home یوزر خود فولدری به نام dockerCompose ایجاد نمایید. و فایلی به نام docker-compose.yml در آن ایجاد نمایید
 +
در این فایل کد زیر را وارد کنید
  
  ''' cat /var/backups/IBSng/custom/pre_end  '''
+
[[پرونده:D1.png]]
  
</div>
+
[[پرونده:D2.png]]
خروجی این فایل میباست مقدار " 1 " باشد.
+
  
  
 +
 +
حال برای اجرای container‌دستور زیر را وارد میکنیم
  
 +
<div dir=ltr lang=en>
  
برای '''start''' کردن '''hourly backup'''  فرمان زیر را اجرا میکنیم :
+
  ''' docker-compose up -d '''   
 
+
<div dir=ltr lang=en>
+
دستور نمایش میدهد که هر دو سرور به درستی up شده است و تمامی پرت ها به سمت کانتینر ها باز است.
 
+
در صورتی که یکی  از سرورها down یا stop است با دستور زیر میتوان آن را UP کرد
  ''' ibs_backup_hourly '''
+
 +
docker-compose start <server name>
 +
که در آن <server name> نام سروری است که قرار است up شود.
 +
 +
   
  
 
</div>
 
</div>
  
سپس صحت پشتیبان گیری  را با فرمان زیر چک میکنیم :
+
این دستور باید containerهای تعریف شده را اجرا بنماید.
 +
 +
برای چک کردن up شدن از دستور زیر استفاده کنید
  
<div dir=ltr lang=en>
+
<div dir=ltr lang=en>  
  
   ''' cat /var/backups/IBSng/hourly/pre_end  '''
+
   ''' Docker-compose ps  '''  
  
 
</div>
 
</div>
خروجی این فایل میباست مقدار " 1 " باشد.
+
 
 +
و مشاهده خواهید کرد که سرور با همه پرتها اجرا شده است.
 +
 +
حال کافی است لایسنس را به روش عادی به روز نماییم.

نسخهٔ کنونی تا ‏۸ ژوئیهٔ ۲۰۱۷، ساعت ۱۳:۵۹

محتویات

[ویرایش] Docker

[ویرایش] Difference between Docker and VM

، Docker هیچ سیستم عامل جدیدی ایجاد نمی کند بلکه این امکان را به بسته نرم افزاری ایجاد شده می دهد که از Kernel اصلی سیستم عامل لینوکسی که بر روی آن نصب شده است استفاده کند و در زمان انتقال نیز فقط Package نرم افزاری منتقل می شود نه ماشین مجازی ، در واقع Docker Engine یا موتور اصلی Docker جایگزین نرم افزار Hypervisor ما می شود و اینکار یعنی کارایی سیستم ما به شدت افزایش می یابد زیرا یک لایه واسط به نام Hypervisor حذف شده و نرم افزار بصورت مستقیم با هسته اصلی سیستم عامل کار میکند با این تفاوت که کاملا ایزوله شده است.

D4.png


در تصویر بالا هم در داکر و هم در ماشین مجازی دو عنصور Server، Host Os مشترک است. در مرحله بعدی در ماشین مجازی یک مجازی ساز مانند Vmware، VirtualBox و در داکر نرم افزار Docker را نصب داریم. تفاوت‌ها از اینجا شروع می‌شود که در ماشین مجازی باید یک سیستم عامل کامل را نصب و نرم افزارها را روی آن نصب کرد. ولی داکر این مرحله را ساده کرده است و یک نسخه کوچک از سیستم عامل را در خود دارد که بدون نیاز به نصب سیستم عامل‌های سنگین و پیچیده می‌توان نرم افزارها را روی آن نصب و تست کرد. هرچند می‌توان نسخه کوچکی از نسخه‌های مختلف سیستم عامل را نیز نصب کرد ولی باز هم بسیار راحت تر از سیستم ماشین‌های مجازی است. از مزایای استفاده از داکر نسبت به مجازی ساز می‌توان به موارد زیر اشاره کرد: ایجاد و حذف بسیار سریع Container ها ریستارت و خاموش کردن بسیار سریعنحوه راه اندازی سرور registry hub انتقال پذیری راحت و سبک مدیریت منابع و ریسورس‌ها به صورت قدرتمند و متغیر و …

داکر Image:

D5.png

در داکر Image‌ها را پس از دریافت اجرا می‌کنیم. همانطور که در بالا می‌بینید یک Base Image مانند Debian روی این داکر نصب شده است و روی آن Image‌های دیگر را نصب کرده ایم. Image‌ها پس از پایان به حالت اولیه خود باز می‌گردند چون همانطور از نام آن‌ها مشخص است تنها یک تصویری از پکیج اصلی هستند. برای حذف تغییرات Image می‌توان حالت آن‌ها را با دستورات خاصی ذخیره کرد.

Docker Hub چیست؟

یک سرویس اشتراک گذاری تهیه شده توسط شرکت Docker است که شامل مخزنی از image‌های آماده برای Docker است. این مخزن حاوی ده‌ها هزار برنامه و سیستم عامل است که می‌توان به آن image‌هایی را هم اضافه کرد. توجه کنید که شرکت پارس پویش دارای hub مخصوص به خود است.

Docker Container:

در واقع می‌توان گفت Container ظرفی است که Image‌ها را در آن اجرا می‌کنند. Container‌ها از روی Image‌ها ایجاد می‌شوند و به وظایف خود عمل می‌کنند. مثلا فرض کنید از یک Centos چند Container می‌سازیم و در هر کدام تغییرات متفاوتی اعمال می‌کنیم.


debian Installation

برای نصب لازم است دو هارد جداگانه در نظر گرفته شود. در هارد اول میتوانید debian را نصب کرده و هارد دوم را به دایرکتوری زیر mount کنید. از شکل زیر پیروی کنید.



پس از پارتیشن بندی به روش فوق, docker را نصب نمایید.

[ویرایش] Docker Installation

برای نصب لازم است ابتدا package های مورد نیاز را نصب کنیم. برای این کار دستور زیر را وارد میکنیم:

  apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common  

حال کلید رسمی منتشر شده از سایت docker‌ را اضافه میکنیم.



Add Docker’s official GPG key:

</div>

 curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -  

حال repository مورد نیاز برای نصب docker را اضافه مینماییم.


</div>

 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian  $(lsb_release -cs) stable"  


سپس با دستورات زیرریپوزیتوری سیستم را به روز رسانی میکنیم


 apt-get update 

سپس با دستورات زیرdocker را نصب میکنیم


 apt-get install docker-ce  
نحوه راه اندازی سرور registry hub

حال میتوانید docker-compose را نصب نمایید

curl -L https://github.com/docker/compose/releases/download/1.13.0/
docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose


دانلود ایمیج از parspooyesh hub

تنظیمات سرور

همچنین فایل زیر را باز نمایید

 Vim /etc/docker/daemon.json 

و کد زیر را در آن اضافه نمایید


{
"insecure-registries": ["5.202.129.64:5000"]
}
   

استفاده از docker-compose برای اجرای docker ibs در فولدر home یوزر خود فولدری به نام dockerCompose ایجاد نمایید. و فایلی به نام docker-compose.yml در آن ایجاد نمایید در این فایل کد زیر را وارد کنید

D1.png

D2.png


حال برای اجرای container‌دستور زیر را وارد میکنیم

   docker-compose up -d   

دستور نمایش میدهد که هر دو سرور به درستی up شده است و تمامی پرت ها به سمت کانتینر ها باز است. در صورتی که یکی از سرورها down یا stop است با دستور زیر میتوان آن را UP کرد

docker-compose start <server name> که در آن <server name> نام سروری است که قرار است up شود.


این دستور باید containerهای تعریف شده را اجرا بنماید.

برای چک کردن up شدن از دستور زیر استفاده کنید

  Docker-compose ps   

و مشاهده خواهید کرد که سرور با همه پرتها اجرا شده است.

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

ابزارهای شخصی

گویش‌ها
فضاهای نام
عملکردها
گشتن
جعبه‌ابزار