کاربرد داکر در علم داده چیست
آشنایی با کاربرد داکر در علم داده
نتورک داکر یا داکر بیشتر با کاربردش در علوم کامپیوتر و مهندسی نرمافزار محبوب است. این شبیهسازی از سطح سیستمعامل به برنامهنویسان اجازه میدهد کدهای خود را با تمام وابستگیهایش روی فضای ابری اجرا کنند و همچنین از هر نقطه و با هر سیستمی به پروژه شرکت یا تیم دسترسی پیدا کرده آن را تغییر داده و اجرا کنند. نتورک داکر در کنار این قابلیتهای اساسی، ویژگیهایی دارد که برای علم داده بسیار کاربردی هستند. در این مقاله قصد داریم کاربرد داکر در علم داده را بررسی و معرفی کنیم.
داکر چیست؟
نتورک داکر بر دو مفهوم پایهای بنا میشود.
- سرویسهای پلتفرمی (Platform as a Service) : یک سرویس اینترنتی (وبسرویس) است که برای توسعهدهندگان پلتفرم اجرای برنامه را فراهم میکند. با استفاده از سرویس پلتفرمی دیگر نیاز نیست تمام امکانات لازم برای اجرای برنامه را روی حافظه کامپیوتر خود داشته باشید. این امکانات در قالب پلتفرم و روی فضای ابری به شما ارائه میشوند.
- کانتینر (Container) : کانتینر در واقع یک شبیهسازی از سیستمعامل است. با استفاده از کانتینر میتوانید بدون نیاز به نصب سیستمعاملهای دیگر، برنامه خود را روی تمام آنها تست کنید. کانتینر امروزه نقش بسیار مهمی را در دنیای برنامهنویسی ایفا میکند. تیمهای نرمافزاری، یادگیری ماشین، بیگدیتا و… بدون کانتینر قادر به ادامه کار نخواهند بود.
با توجه به این دو مفهوم پایهای نتورک داکر تعریف میشود. هر داکر مجموعهای از کانتینر ها است که همگی به یک هسته (Kernel) مشترک سیستمعاملی (مثلا لینوکس) متصلند. هر کدام از این کانتینرها کتابخانهها و پکیجهای مربوط به خود را نگهداری میکنند و از طریق کانالهایی با یکدیگر در ارتباطند. برنامهنویس با دسترسی به کانتینر میتواند کد را مشاهده کرده روی آن تغییراتی را ایجاد کند یا از اجرای درست نسخه جدید مطمئن شود. با استفاده از داکر دیگر نگران Dependancy های کدتان نخواهید بود. چون که در کانتینر تمام امکانات لازم برای اجرای کد روی فضای ابری فراهم شده است.
داکر از کجا میآید؟
سالومون هایکس که در سال ۲۰۱۰ بهعنوان یکی از کارکنان شرکت «داتکلود» (شرکتی که خدماتی در زمینه فضای ابری ارائه میداد) مشغول به کار بود، این ایده را برای اولین بار مطرح کرد. او که بهطور تخصصی روی فضاهای ابری کار میکرد، به این فکر افتاد که از این طریق جایگزینی بهینهتر برای ماشینهای مجازی ارائه کند. او این پروژه را بهعنوان پروژه داخلی شرکت آغاز کرده و پس از رسیدن به نتایج قابل قبول، از آن در کنفرانس بینالمللی و سالانه پایتون رونمایی کرد. در ابتدا داکر از LXC بهعنوان محیط اجرا استفاده میکرد. اما با گذشت زمان، هایکس و همکاران موفق به ارائه محیط اجرای ویژه داکر شدند و همین باعث شد نتورک داکر قدم بزرگی رو به جلو بردارد.
پس از موفقیت تجاری داکر و توجه ویژه برنامهنویسان به آن، شرکتهای بزرگ مثل مایکروسافت بهفکر یکپارچه کردن آن با سیستمعاملها و فریمورکهای خود افتادند. از آنجا که داکر یک نرمافزار متنباز است، امکان تعامل گستردهای برای دیگر برندها بهوجود میآورد. در حال حاضر ویندوز و لینوکس تماما با داکر سازگاری داشته و این فریمورک در وسعت جهانی مورد استفاده برنامهنویسان است.
داکر چگونه کار می کند؟
در زمان قدیم اگر دو برنامهنویس قصد همکاری با یکدیگر را داشتند، مشکلات زیادی سر راهشان وجود داشت. بزرگترین مشکل مربوط به انتقال کدها بین کامپیوترهای این دو نفر بود. نبودن موارد لازم برای اجرای کد روی کامپیوتر مقصد یا مخدوش شدن فایلها در حین انتقال را میتوان از مهمترین دلایل این مشکل دانست. در ادامه ماشین مجازی (Virtual Machine) برای حل این مشکل ساخته شد. ماشین مجازی یک شبیهسازی از معماری کامپیوتر بود که امکان اجرای پروژههای مختلف را بدون وجود یک سیستم کامپیوتری فراهم میکرد.
نتورک داکر را بهعنوان ماشین مجازی سبک میشناسند. در نتورک داکر یک شبیهسازی از سیستمعامل به کاربر ارائه میشود که با آن میتواند کدهای مختلف را اجرا کند. این محیط روی فضای ابری قرار دارد. برای همین زمانی که دو برنامهنویس یا حتی یک تیم قصد همکاری را داشته باشند، تنها با اتصال به یک داکر میتوانند کد را مشاهده کرده از آن نسخههای مختلف بسازند.
کاربردهای اصلی داکر عبارتند از:
- اطمینان از اینکه برنامه روی تمام محیطها و سیستمعاملها به یک شکل واحد و مناسب اجرا میشود.
- بینیاز شدن از نصب مواردی مثل JRE یا SDK برای اجرای یک برنامه یا کار روی آن (تمام امکانات از قبل فراهم شدهاند).
- استفاده نکردن از ماشین مجازی که سنگین و کند است.
- متمرکز شدن تمام تلاش تنها روی توسعه اپلیکیشن (در گذشته جابجایی کد و موارد حاشیهای از این دست تبدیل به دغدغه تیم میشد)
کاربردهای علم داده
علم داده را میتوان علم روز نامید. در حال حاضر بهترین بورسیهها در کشورهای پیشرفته به دیتاساینس تعلق میگیرد. دلیل این امر گره خوردن علم داده با پیشرفت کسبوکارهای نوین در ابعاد مختلف، خصوصا بازاریابی و ارتباط با مشتری است. کاربردهای علم داده بیشمارند اما در اینجا به آوردن مهمترینها (پراستفادهترینها) بسنده میکنیم:
- توسعه سیستم تشخیص جعل و کلاهبرداری
- پیشبینی تحلیلی
- بخشبندی بازار (مشتری)
- جلوگیری از ریزش مشتری
- پیشبینی ارزش عمر مشتری (CLV)
- مدیریت و بهبود شبکه
- توسعه محصول
- موتورهای جستجو
- تحلیل احساسی نظرات مشتریان
- تحلیل با توجه به اطلاعات واقعی
- بهبود قیمتها
کاربرد داکر در علم داده چیست؟
درصد زیادی از علم داده مربوط به کدنویسی با زبانهایی مثل پایتون است. متخصصان علم داده در مواردی مثل یادگیری ماشین، یادگیری عمیق یا بیگدیتا در فضاهای دانشگاهی و تحقیقاتی یا کسبوکارهای دیجیتال به فعالیت مشغولند. این فعالیت عموما در قالب تیمهای بزرگ (بین ۱۰ تا ۱۰۰ نفر) انجام میگیرد. در چنین شرایطی همان دغدغه همیشگی بهسراغ برنامهنویسان میآید که «چگونه این کد را با دیگران به اشتراک بگذارم؟» یا «چرا کد نوشته شده توسط همکارم روی سیستم من خروجی نمیدهد؟» برای حذف این دغدغهها باید مدرن فکر کرد.
نتورک داکر یک راه بهینه و اثربخش برای بهاشتراک گذاشتن کد و اجرای آن روی تمام سیستمها است. با نتورک داکر حتی زمانی که یکی از اعضای تیم در تعطیلات باشد، امکان دسترسی به کد، تست کردن یا ساخت نسخههای جدید برای او فراهم است. برای این کار کافی است بتواند به اینترنت وصل شده و وارد داکر شود.
با داکر در علم داده میتوانید از تغییرات ایجاد شده در کد image گرفته یا نتیجه آن را در قالب یک وباپلیکیشن منتشر کنید. اینگونه است که همتیمی شما تنها با دسترسی به آن image از طریق اینترنت قادر خواهد بود تغییرات شما را تایید یا تکمیل کند. خروجی گرفتن دار قالب وباپلیکیشن هم خیال شما را از اجرای درست کدتان راحت خواهد کرد. در ادامه روش کار با دستورات مربوط به استفاده داکر در علم داده را به شما آموزش میدهیم.
دستورات مربوط به کاربرد داکر در علم داده
قبل از همهچیز لازم است داکر را روی سیستم خود نصب کنید.
sudo apt update
sudo apt install docker.io
سپس از دستور زیر برای اطمینان از نصب شدن آن استفاده کنید.
sudo service docker status
اگر داکر در حالت active mode قرار نداشت دستور زیر را تایپ کنید.
sudo service docker start
مثال: نوشتن یک برنامه flask ساده
fr
om flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "Hello World"
if __name__ == '__main__':
app.run(host='0.0.0.0')
این برنامه ساختار خاصی ندارد و تنها برای نشان دادن دستورات لازم برای انجام اعمالی مثل گرفتن image و ساخت و اجرای یک کانتینر از داکر ایمیج آن را آوردیم. دقت داشته باشید که هاست در داکر همواره باید ۰٫۰٫۰٫۰ وارد شود. چون اجرای برنامه بهصورت محلی در خود داکر اتفاق میافتد.
پس از نوشتن برنامه بالا، از طریق دستور زیر میتوانیم فایل requirements بسازیم:
$ pip3 list > requirements.txt
حالا به دستورات زیر توجه کنید
FROM ubuntu:latest
LABEL Gagandeep Singh
RUN apt update -y
RUN apt install -y python3-pip
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
ENTRYPOINT ["python3"]
CMD ["app.py"]
این دستورات شیوه ایجاد یک DockerFile هستند. این فایل شامل تمام کد های لازم برای ساخت و اجرای کانتینر از داکر ایمیج در کامپیوتر شما میشود. در ادامه مرحله به مرحله این کد را توضیح میدهیم:
- با این دستور آخرین image موجود پروژه از داکر درخواست میشود.
- با این دستور پایگاه داده محلی شما (حاوی اطلاعات نرمافزار) بهروز میشود.
- در اینجا پایتون را برای کار روی کد نصب میکنیم.
- حالا فایلهای برنامه را روی کامپیوتر کپی میکنیم (به جای app میتوانید پوشه مورد نظر خود را مشخص کنید).
- با این کد محیط کار شما از داکر به فولدری که همین الان کپی کردید تغییر میکند.
- چند خط بالاتر و درست پس از پایان کد برنامه، یک فایل txt ایجاد کردیم. این فایل پیشنیازهای اجرای برنامه را در خود نگهداری میکند. با این دستور تمام موارد لازم را روی پایتون نصب میکنیم تا محیط آماده کار روی کد شود.
- حالا پایتون را تبدیل به ابزار کار روی کد میکنیم.
- برنامه را در پایتون اجرا میکنیم.
در انتهای این مراحل ما یک DockerFile داریم که با استفاده از آخرین نسخه Docker Image آخرین نسخه کد موجود روی داکر کانتینر را به سیستم ما منتقل کرده و به ما اجازه میدهد روی آن کار کنیم.
نصب داکر چگونه است
پاسخ این سوال برای ویندوز بسیار ساده خواهد بود. به بخش نصب داکر روی ویندوز در صفحه مستندات داکر رفته و روی Download From DockerHub کلیک کنید. ادامه روند تفاوت چندانی با نصب یک نرم افزار روی کامپیوتر ندارد. برای نصب داکر روی لینوکس اوبونتو از روش زیر میتوان عمل کرد:
- ابتدا مخزن نرمافزار سیستمعامل را بهروز میکنیم
sudo apt-get update
- ورژن قدیمی داکر را در صورت وجود حذف میکنیم
sudo apt-get remove docker docker-engine docker.io
- داکر را نصب میکنیم
sudo apt install docker.io
- داکر را اجرا کرده و به سیستم اجازه میدهیم آن را تنظیم کند
sudo systemctl start docker
sudo systemctl enable docker
- با این دستور میتوانیم اطلاعات مربوط به نسخه نصب شده را دریافت کنیم
docker –version
نتیجه گیری
نتورک داکر پدیدهای است که با وجود نوظهور بودن جایگاه ویژهای را در میان فعالان حوزه کامپیوتر و دیتا به خود اختصاص داده است. حذف محدودیتهای فیزیکی و راحتتر کردن کار تیمهای برنامهنویسی از مهمترین دستاوردهای داکر بهحساب میآید.
داکر از طریق کانتنینرهایی که همه به یک هسته مرکزی متصلند، شبیهسازی سیستمعامل را با کیفیت بالایی ارائه میدهد. در این شبیهسازی میتوانید کدهای خود را بدون نیاز به فراهم کردن وابستگیها اجرا کرده و تغییرات مورد نظر را با دیگر همکاران بهاشتراک بگذارید.
علم داده علمی نوظهور است که در حال حاضر کاربردهای زیاد و جذابی در اکوسیستم کسبوکارهای دیجیتال پیدا کرده و از قضا با برنامهنویسی تیمی سروکار دارد. دار این مطلب سعی کردیم مبانی عملی استفاده از نتورک داکر در علم داده را بیان کنیم.