آموزش اشتراکگذاری دیتا بین کانتینر داکر و هاست
در این مقاله میخوانید
بهطورکلی، کانتینرهای داکر (Docker) مدت زیادی کار نمیکنند. درواقع، این کانتینرها حالت موقتی دارند و تا زمانی کار خواهند کرد که دستور (Command) صادرشده در کانتینر تکمیل شود. هر دادهای که در کانتینر ایجاد میشود، فقط از درون کانتینر و هنگام اجرای آن دردسترس خواهد بود. در این مقاله، قصد داریم نحوه اشتراکگذاری دیتا بین کانتینر داکر و هاست را به شما آموزش دهیم.
اشتراکگذاری دیتا بین کانتینر داکر و هاست
از حجمهای Docker میتوان برای اشتراکگذاری فایلها بین سیستم هاست و کانتینر داکر استفاده کرد. برای مثال، درصورتیکه قصد دارید از تصویر رسمی Docker Nginx استفاده کنید و یک کپی دائمی از فایلهای گزارش Nginx را برای آنالیز نزد خود نگه دارید، بهصورت پیشفرض تصویر Nginx Docker به پوشه var/log/nginx و کانتینر Docker Nginx خواهد رفت.
در سرویسهای میزبانی و محیطهای کانتینری امکان اشتراکگذاری داده وجود دارد و میتوانید با این قابلیت عملکرد سرویسهایتان را بهطور چشمگیری بهبود دهید. با استفاده از حجمهای Docker میتوانید دادهها را بین هاست و کانتینر داکر بهاشتراک بگذارید و با سرعت و بهرهوری بیشتری دادههایتان را مدیریت کنید. اشتراکگذاری دیتا بین هاست و کانتینر داکر با ویژگی حجمهای Docker این امکان را به توسعهدهندگان میدهد تا استفاده بهینهتری از منابع و دادههای هاست داشته باشند.
خرید هاست
با توجه به توضیحات این مقاله میتوانید، سرویس میزبانی خود را مدیریت کنید و اگر شما قصد خرید سرویسهای هاست پارس پک را دارید، میتوانید از لینک زیر اقدام کنید و یا با کارشناسان فروش ما در ارتباط باشید.
پیشنیازها
برای انجام این کار، به سرور اوبونتو 18.04 نیاز دارید که این پیشنیازها را داشته باشد:
- یک User غیر root با امتیازات sudo که از راهنمای نصب اولیه سرور با اوبونتو پیروی میکند.
- یک داکر با دستورالعملهای مرحله اول و دوم که درادامه گفته میشود و استفاده از آن در اوبونتو.
توجه: حتماً توجه کنید که حتی اگر پیشنیازها دستورالعملهایی برای نصب داکر در ابونتو 18.04 ارائه میدهند، دستورهای Docker برای حجم دادهها باید تا زمانی که داکر نصب شده است، روی سایر سیستمعاملها کار کند.
مرحله ۱. Bindmounting a Volume
دستور زیر دایرکتوریای به نام nginxlogs در فهرست اصلی یوزر فعلی شما ایجاد و آن را به /var/log/nginx در کانتینر منتقل میکند:
$ docker run --name=nginx -d -v ~/nginxlogs:/var/log/nginx -p 5000:80 nginx
اکنون قصد داریم این دستور را دقیق بررسی کنیم:
- –name=nginx کانتینر را نامگذاری میکند تا بتوانیم راحتتر به آن مراجعه کنیم.
- -d مسئول اجرای فرایند است و آن را در پسزمینه اجرا میکند؛ درغیراینصورت، فقط اعلان خالی Nginx را تماشا میکنیم. دقت کنید تا زمانی که Nginx را نکِشیم، نمیتوانیم از این Terminal استفاده کنیم.
- -v ~/nginxlogs:/var/log/nginx حجم Bindmount را تنظیم میکند و پوشه /var/log/nginx را از درون کانتینر Nginx به دایرکتوری ~/nginxlogs در ماشین میزبان متصل خواهد کرد.
- داکر از : برای جداکردن مسیر میزبان از مسیر کانتینر استفاده میکند و مسیر میزبان همیشه پیش از مسیر کانتینر میآید.
- -p 5000:80 هم پورت رو به جلو (Port Forward) را تنظیم میکند. کانتینر Nginx بهصورت پیشفرض پورت 80 را فراخوانی خواهد کرد. این Flag پورت 80 کانتینر را به پورت 5000 در سیستم هاست ترسیم میکند.
- nginx مشخص میکند کانتینر باید از تصویر Nginx ساخته شود که دستور nginx -g “daemon off” را برای استارت یا شروع Nginx صادر خواهد کرد.
توجه: پرچم یا flag -v بسیار انعطافپذیر است. همین امر باعث میشود که بتوانید با تغییری جزئی در تنظیمات، Volume را نامگذاری یا Bindmount کنید.
درصورتیکه آرگومان (Argument) اول با / یا ~/ شروع شود، شما Bindmount ایجاد میکنید.
-v /path:/path/in/container هاست دایرکتوری را نصب میکند؛ /path در /path/in/container
-v path:/path/in/container هم یک Volume به نام path بدون ارتباط با هاست ایجاد میکند.
مرحله ۲. دسترسی به دادهها در هاست
اکنون یک کپی از Nginx داریم که در کانتینر داکر در ماشین یا هاست خود اجرا میشود و پورت 5000 ماشین میزبان ما مستقیماً در آن کپی از پورت 80 Nginx نگاشته میشود.
در مرورگر وب مدنظرتان، آدرس را با استفاده از IP یا نام هاست سرور خود و شماره پورت که http://your_server_ip:5000 است، Load کنید.
جالب است بدانید اگر به فهرست ~/nginxlogs در هاست نگاهی بیندازید، access.log را خواهید دید که کانتینر nginx ایجاد کرده است. این نشاندهنده درخواست شما خواهد بود:
$ cat ~/nginxlogs/access.log
این دستور باید چیزی شبیه به خطوط زیر باشد:
Output
203.0.113.0 - - [11/Jul/2018:00:59:11 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" "-"
اگر تغییری در پوشه ~/nginxlogs ایجاد کنید، میتوانید آنها را از درون کانتینر Docker ببینید.
جمعبندی
در این مقاله از سرویس های میزبانی، نحوه اشتراکگذاری دیتا بین کانتینر، داکر و هاست را به شما آموزش دادیم. با استفاده از این آموزش، بهراحتی میتوانید یک حجم داده Docker را برای اشتراکگذاری اطلاعات بین کانتینر و سیستم فایل میزبان ایجاد کنید.
سؤالات متداول
1. کانتینرهای داکر تا چه زمانی کار میکنند؟
کانتینرهای داکر حالت موقتی دارند و تا زمانی کار خواهند کرد که فرمان صادرشده در کانتینر تکمیل شود.
2. چگونه میتوانیم فایلها را بین سیستم هاست و کانتینر داکر بهاشتراک بگذاریم؟
از حجمهای Docker میتوانید برای اشتراکگذاری فایلها بین سیستم هاست و کانتینر داکر استفاده کنید.
3. استفاده از این روش برای اشتراکگذاری فایلها بین سیستم هاست و کانتینر داکر به چه ابزاری نیاز دارد؟
به سرور اوبونتو 18.04