داکر برای برنامه‌نویس‌ها: قسمت ششم - اشتراک و جابجایی فایل در کانتینر

مقدمه

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

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

اشتراک فایل با کانتینر

وقتی بخوایم یک پوشه رو از سیستم خودمون داخل کانتینر داشته باشیم اون رو داخلش mount می‌کنیم. بعد از این کار اون پوشه داخل کانتینر دقیقا همون پوشه سیستم ماست. با آپشن v- این کارو انجام میدیم:

بعد از گذاشتن v-، اول مسیر پوشه در سیستم خودمون بعد دو نقطه و در آخر مسیر پوشه در کانتینر رو میدیم. من در این مثال پوشه‌ای که توش هستم رو به جایی که nginx ازش فایل‌ index.html رو می‌خونه mount کردم. در این پوشه این فایل موجود نیست. بیاید به این کانتینر درخواست بدیم:

یه پیغام خطا میده و غیر اون چیزی بهمون نمیده. چون فایلی که می‌خواد نیستش. حالا index.html رو می‌سازم و داخلش یه چیزی می‌نویسم:

این بار درخواستم رو جواب داد. چون فایلی که می‌خواست رو پیدا کرد.

من می‌تونم همین پوشه رو با کانتینرهای دیگه هم به اشتراک بذارم (mount کنم). این بار از اوبونتو استفاده می‌کنم:

این دفعه تو پوشه home برای کاربر root گذاشتم. دیدیم که فایلی که داشتیم دوباره اینجاست. هر تغییری توش بدم هم تو سیستم خودم و هم تو nginx اعمال میشه:


کپی کردن فایل از/به کانتینر

مواقعی پیش میاد که نمی‌خوایم فایلی رو با سیستم خودمون به اشتراک بذاریم و فقط می‌خوایم یه چیزی رو به کانتینر بفرستیم یا ازش بگیریم. در این مواقع از cp استفاده میشه:

اگر بخوایم از کانتینر به سیستم انتقال بدیم اول آیدی کانتینر، بعد دو نقطه و مسیر مورد نظر داخل کانتینر رو می‌نویسیم. در آخر یه فاصله میذاریم و مسیر در سیستم خودمون رو می‌نویسیم. در صورتی که قصدمون انتقال به کانتینر باشه این رو برعکسش می‌کنیم؛ یعنی اول مسیر تو سیستم، یه فاصله، بعد آیدی کانتینر، دو نقطه و مسیر داخل کانتینر. تو تصویر بالا من new.html رو به root/ در کانتینر انتقال دادم.


جمع بندی

در این قسمت دیدیم چطوری میشه فایل‌ها رو به داخل کانتینر فرستاد یا پوشه‌ها رو در کانتینر mount کرد. امیدوارم براتون مفید بوده باشه. اگر سوال یا نظری دارید این پایین بفرمایید.

قسمت قبلی

قسمت بعدی