۳۰.مدیریت دیتا‌ها در سرویس داکر

docker volumeامروز می‌خواهیم در مورد موضوع بسیار مهم نگهداری و حفظ دیتا در کانتینرهای صحبت کنیم. این نکته‌ اهمیت دارد که هیچ‌گاه نباید دیتای با اهمیت در داخل کانتینر وجود داشته باشد. اگر کانفیگ یا دیتای مهمی وجود دارد باید همواره یا در ایمیج قرار داشته باشد یا به صورت کامل از داخل کانتینر بر روی هاست یا بر روی استوریج قابل اعتمادی نگهداری شود. برای نگهداری داده‌های داخل یک کانتینر معمولا از ۳ روش استفاده می‌کنند:Choose the right type of mountروش Volumes: در این روش با استفاده از volume اطلاعات داخل کانتینر بر روی host و یا بر روی یک storage دیگری ذخیره می‌شود البته این امکان نیز وجود دارد که این اطلاعات و یا کانفیگ‌ها از روی کانتینر دیگری فراخوانی و یا در آن ذخیره شود. بر روی سیستم‌عامل لینوکس وقتی از درایور لوکال استفاده شود اطلاعات به صورت پیش‌فرض در این مسیر /var/lib/docker/volumes/ قرار می‌گیرد. البته این مسیر به صورت پیش‌فرض می‌باشد و شما در هنگام نصب و یا بعد از آن می‌توانید آن را تغییر دهید. روش Bind mounts: با استفاده از این روش داده‌های داخل یک کانتینر بر روی دایرکتوری‌های سیستم هاست قرار داده و این اطلاعات بر روی سیستم هاست نگهداری می‌شود و هر زمان که برای کانتینر مشکل پیش‌ بیاید این داده‌ها بر روی هاست باقی خواهند ماند. روش tmpfs mounts: در این روش اطلاعات بر روی رم سیستم هاست قرار داده می‌شود و با استفاده از این روش نمی‌توان بر روی فایل‌سیستم سیستم هاست اطلاعات را نگهداری کرد. در ادامه در مورد هر کدام از روش‌های بالا توضیحات کامل‌تری داده می‌شود: Persist data to volumeروش والیوم:در این روش با استفاده از دستور مدیریتی docker volume می‌توان والیوم ایجاد کرده و دیتای کانتینر را در آن قرار داد. با استفاده از روش والیوم، والیومی که ایجاد شده است داخل کانتینر mount می‌شود. این روش بسیار ساده بوده و استفاده از آن خیلی مرسوم است. با استفاده از این روش می‌توان یک والیوم را داخل چند تا کانتینر نیز استفاده کرد. کانتینر و والیوم به صورت جداگانه مدیریت می‌شود و اگر کانتینر پاک و یا از کار بیافتد والیوم به صورت خودکار تغییری نمی‌کند و پابرجا خواهند بود. در صورتی که نیاز داشتید والیوم را پاک کنید می‌توانید از دستور مربوط به آن استفاده کنید که در مستند شماره‌ی ۳۱ به صورت کامل توضیح داده می‌شود. همواره باید برای والیوم‌ها یک نام انتخاب کنید که اگر این کار در زمان ایجاد والیوم انجام نشود خود سرویس داکر یک اسم رندم برای آن انتخاب می‌کند.درایورهای مختلف برای والیوم: درایورهای مختلفی برای والیوم داکر وجود دارد که به صورت پیش‌فرض درایور لوکال همراه سرویس داکر نصب می‌شود. با استفاده از این درایور والیوم‌ها بر روی سیستم هاست ایجاد می‌شوند و به صورت پیش‌فرض در مسیر /var/lib/docker/volumes/ قرار می‌گیرند. سرویس داکر درایورهای متعددی را پشتیبانی می‌کند که می‌‌توان به درایور مخصوص مجازی‌سازی پر قدرت VMware و یا درایور مربوط به سایت DigitalOcean اشاره کرد. تمام این موارد تحت عنوان پلاگین‌های داکر بررسی و به صورت کامل توضیح داده خواهد شد.برخی از موارد استفاده‌ی والیوم:با استفاده از داکر والیوم یک بار می‌توان والیوم را ایجاد کرد و بارها از آن در کانتینرهای مختلف استفاده کرد. به صورت مستقل از کانتینرها مدیریت می‌شود و اینکه می‌تواند به صورت فقط خواندنی و یا به صورت خواندن و نوشتن در کانتینرهای متعددی mount شود. با استفاده از پلاگین‌های متعدد والیوم می‌توان اطلاعات داخل کانتینر را بر روی خود هاست و یا هاست‌های دیگر و استوریج‌های دیگر ذخیره کرد و این امکان به راحتی میسر می‌شود.به راحتی می‌توان از والیوم‌های ایجاد شده در هاست پشتیبان تهیه کرد. بهتر است برای این کار کانتینری که از آن والیوم استفاده می‌کند را متوقف و سپس پشتیبان لازم از دایرکتوری والیوم مد نظر تهیه کرد.به راحتی و با استفاده از دستور مدیریتی docker volume می‌توان آنها را مدیریت کرد.والیوم در سیستم‌عامل‌های ویندوز و لینوکس کار می‌کند. نکته‌ی مهم اینکه برخی از قابلیت‌ها تنها بر روی سیستم عامل لینوکس کارایی دارند. والیوم بهترین و ساده‌ترین روش برای نگهداری داده‌های کانتینرها می‌باشد. روش Bind mounts:این روش از روزهای ابتدایی ارائه داکر برقرار بوده است. در این روش یک دایرکتوری هاست داخل کانتینر mount می‌شود. نیازی نیست که دایرکتوری داخل هاست وجود داشته باشد بعد از راه‌اندازی کانتینر اگر وجود نداشته باشد این دایرکتوری توسط سرویس داکر ایجاد می‌شود. این روش به شدت ساده و دم دستی است و محدودیت‌های زیادی دارد. این روش دارای دستور مدیریتی نیست و کلا توسط خط فرمان داکر مدیریت نمی‌شود. این روش به هاست داکر وابسته و محدود به امکانات آن می‌باشد. بیشتر از این روش برای مواردی که یک سری کانفیگ‌ فایل بین هاست و کانتیر به اشتراک گذاشته شده است استفاده می‌شود. به عنوان مثلا برای به اشتراک گذاشتن کانفیگ مربوط به dns بین هاست و کانتینر استفاده می‌شود. این روش در محیط‌های غیر عملیاتی و برای توسعه‌ی سریع و آزمایشگاهی بسیار کاربرد دارد. منبعآموزش داکر و پلتفرم به زبان فارسی https://dockerme.ir/