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

Docker Desktop دو مکانیسم را برای به اشتراک گذاشتن بخشی از سیستم فایل محلی با یک کانتینر ارائه می دهد، با نام bind mount و volumes. علاوه بر این، می توانید بخشی از سیستم فایل خود را در سیستم فایل خود کانتینر کپی کنید. هر رویکرد هدف یکسانی از اشتراک گذاری فایل ها بین سیستم فایل محلی و کانتینر (و همچنین در بین کانتینرهای مجزا) را دنبال می کند. با این حال، هر مکانیزم دارای تعادل مزایا و معایب خاص خود است که آنها را برای موارد استفاده مختلف مناسب می کند. کپی کردن فایل ها در یک کانتینر دارای این اشکال بزرگ است که تمام داده های کپی شده، از جمله هرگونه تغییر در آن، با حذف کانتینر از بین می روند. اگر می خواهید کد مورد نیاز خود را برای ویرایش به اشتراک بگذارید، قطعاً این نتیجه مطلوب نیست.
در مورد دو گزینه دیگر، همانطور که ترنر توضیح می دهد، bind mounts انعطاف پذیرترین راه حل هستند، اما عملکرد آنها نسبت به حجم های مشترک پایین تر است. وقتی می‌خواهید کدهایی را که باید ویرایش کنید، به اشتراک بگذارید، Bind mounts راه قطعی هستند. با این حال، آنها می توانند برای مخازن بسیار بزرگی که باید تعداد زیادی عملیات خواندن/نوشتن را انجام دهید، مشکل ساز باشند. در این موارد، می‌توانید با استفاده از راه‌حل‌های شخص ثالث مانند Mutagen و docker-sync، آینه‌سازی را امتحان کنید. از طرف دیگر، Bind mount‌ها برای مواردی مانند پایگاه‌های داده، درخت‌های وابستگی یا کتابخانه‌ها، کش‌ها و فایل‌های گزارش، قطعا گزینه مناسبی نیستند. برای همه این موارد، بهتر است از حجم های مشترک استفاده کنید. البته این وضعیت ممکن است تغییر کند، به لطف Virtiofs، که به طور خاص برای اشتراک‌گذاری فایل‌ها بین یک میزبان و یک VM طراحی شده است. Virtiofs در حال حاضر در پیش نمایش Docker Desktop برای macOS موجود است.

بیشتر بدانید: https://lnkd.in/dN5iaJYG