x
تبلیغات

 

همانطور که در قسمت های قبلی به آن اشاره شد داکر داده های مربوط به هر کانتینر را جدا از ایمیج آن ذخیره می‌کند. داکر برای مدیریت داده ها و لایه های مربوط به ایمیج ها و کانتینرها از یک فایل سیستم به نام Union File System استفاده می کند.

 

این فایل سیستم برای ذخیره داده های انبوه با دسترسی بالا مناسب نمی باشد و ذخیره داده های حجیم بر روی آن توصیه نمی شود بنابراین داکر برای مدیریت داده یک راه‌حل به نام Volume ارائه کرده است در این قسمت ما مدیریت داده ها با استفاده از Volume را بررسی خواهیم کرد.


روال کار Volumeها به این شکل می باشد که داده ها در هاست داکر بر روی یک فولدر قرار می‌گیرند و از روی آن فولدر یک Volume ساخته می شود حال این Volume می‌تواند توسط یک یا چند کانتینر استفاده شود.


Volumeها خواص و مزیت های زیر را دارند.


۱) یک Volume می تواند توسط یک یا چند کانتینر مورد استفاده قرار گیرد.
۲) تغییر داده ها در Volume به صورت مستقیم و جدا از فایل سیستم فایل UFS صورت می گیرد.
۳) داده های مربوط به Volume زمانی که کانتینر را حذف کنید باقی می ماند.


برای ایجاد یک Volume در ساده ترین شکل می توانید در دستور run از سوییچ -v به شکل زیر استفاده کنید:

 

docker container run -it -v /webapp alpine


01 Getting Started with Containers Part 09


در دستور بالا یک Volume به نام webapp ایجاد شده و در درون کانتینر در شاخه‌ی webapp/ به صورت خواندنی نوشتنی Mount شده است و شما می توانید داده های خود را درون آن قرار دهید. توجه داشته باشید که زمانی در سویچ -v محل ذخیره شدن Volume را وارد نکنید داکر به صورت پیش فرض Volume را در شاخه Volume در مسیر var/lib/docker/ ایجاد می‌کنند. برای به دست آوردن مسیر Volume در هاست داکر می توانید از دستور زیر استفاده کنید:

 

docker container inspect 24108c904a08


در دستور بالا 24108c904a08 ای دی کانتینر می باشد:


02 Getting Started with Containers Part 09


در خروجی این دستور در قسمت Mount می توانید محل دقیق Volume ایجاد شده را مشاهده کنید.


سوئیچ -v علاوه بر ایجاد کردن Volume می‌توانند در Mount کردن یک مسیر در هاست داکر به کانتینر کاربرد داشته باشد به دستور زیر توجه کنید.


docker container run -it -v /data/webapp:/webapp alpine


03 Getting Started with Containers Part 09


همانطور که در دستور بالا مشخص است ما شاخه‌ data/webapp/ بر روی هاست داکر در شاخه‌ webapp/ کانتینر Mount کردیم. از این به بعد داده‌های شاخه data/webapp/ در داخل کانتینر در مسیر webapp/ قابل دسترسی می باشد.


همانطور که قبلا به آن اشاره شد Volume می‌تواند به صورت خواندنی نوشتنی مورد استفاده قرار گیرد ولی اگر چنانچه قصد داشته باشید Volume به صورت فقط خواندنی استفاده شود می‌تواند دستور بالا را به شکل زیر تغییر دهید.

 

docker container run -v /data/webapp:/webapp:ro alpine


همچنین در صورت تمایل می توانید Volume را برای بالا بردن کارایی یک کانتینر برای کش استفاده کنید در این صورت از دستور بالا به شکل زیر استفاده کنید.


docker container run -v /data/webapp:/webapp:cache alpine


همانطور که قبلاً به آن اشاره شد شما می‌توانید یک Volume را به صورت اشتراکی بین چند کانتینر استفاده کنید برای این منظور ابتدا Volume مورد نظر را با دستور زیر در یک کانتینر ایجاد کنید.

 

docker container run --name web1 -d -v /webapp alpine


04 Getting Started with Containers Part 09


سپس با استفاده از سوئیچ volumes-from-- آن را در کانتینر دیگر Mount کنید.


docker container run --name web2 -d --volumes-from web1 alpine


05 Getting Started with Containers Part 09


در این دستور ما از Volume ایجاد شده در کانتینر web1 در کانتینر web2 استفاده کردیم.


توجه داشته باشید که سوئیچ v- را می توانید چندین بار استفاده کنید تا بتوانید چند Volume به کانتینر Mount کنید به دستور زیر توجه کنید.


docker container run -it -v /vol1 -v /vol2 alpine


06 Getting Started with Containers Part 09


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

docker volume list


07 Getting Started with Containers Part 09


برای حذف یک Volume می‌توانید از دستور زیر استفاده کنید.


docker volume rm 5a68653f7657dd7e9493a84ae87ac02e0d00fa7adb83dc5e9ee0f4084de0386c


08 Getting Started with Containers Part 09


در دستور بالا 5a68653f7657dd7e9493a84ae87ac02e0d00fa7adb83dc5e9ee0f4084de0386c ای دی Volume می باشد.


توجه داشته باشید که قبل از حذف Volume نباید توسط هیچ کانتینری استفاده شود. در غیر این صورت خطای زیر را دریافت خواهید کرد.


09 Getting Started with Containers Part 09


برای حذف تمامی Volumeهای بدون استفاده به صورت یکجا می توانید از دستور زیر استفاده کنید.


docker volume prune


10 Getting Started with Containers Part 09


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

 

docker volume inspect f1e6650ffd45d152ccc01b0faf597b5323dcccee2639eb2012a0156962ef0b59


11 Getting Started with Containers Part 09

 

 

 

 

لینک های مرتبط با این مقاله:

  1. شروع کار با کانتینرها (قسمت اول) – آشنایی با کانتینرها
  2. شروع کار با کانتینرها (قسمت دوم) – آشنایی با مفاهیم پایه
  3. شروع کار با کانتینرها (قسمت سوم) – نصب داکر بر روی CentOS
  4. شروع کار با کانتینر ها (قسمت چهارم) – نصب داکر بر روی Windows Server 2016
  5. شروع کار با کانتینر ها (قسمت پنجم) – نصب داکر بر روی Windows 10
  6. شروع کار با کانتینر ها (قسمت ششم) – ایجاد اولین کانتینر
  7. شروع  کار با کانتینر ها (قسمت هفتم) – مدیریت کانتینر ها
  8. شروع کار با کانتینر ها (قسمت هشتم) – مدیریت ایمیج ها