داکر (Docker) چیست؟ هر چیزی که باید در مورد داکر بدانید
DevOpsمجموعهای از شیوههایی است که توسعه نرمافزار (Dev) و عملیات IT (Ops) را با هم ترکیب میکند. هدف کوتاه کردن چرخه عمر (Life Cycle) توسعه سیستمها و تحویل مداوم با کیفیت بالای نرم افزار است. درواقع DevOps مکمل توسعه نرمافزار با روش Agile است.پلتفرم Swarm چیست؟
Docker از زمان انتشار آن در سال 2013، به یکی از فناوریهای روبهرشد در حوزهی Devops تبدیل شده است. با این حال، مانند دیگر تکنولوژیهای جدید، داکر دارای محدودیتها، یا به عبارتی مزایا و معایبی است که نمیتواند برای استفاده در تمام پروژهها مناسب باشد. با خواندن این مقاله ضمن آشنایی با مفاهیم اولیه و کاربردهای این فناوری، میتوانید تشخیص دهید که آیا استفاده از داکر برای پروژه شما انتخاب مناسبی است یا نه!
Container چیست؟
قبل از آنکه به تعریف Docker بپردازیم، ابتدا مفهوم Container (کانتینر) را بیان میکنیم.
Container یک واحد نرمافزاری استاندارد است، که کد نرمافزار و همه وابستگیهای آن را به یک پکیج تبدیل میکند تا نرمافزار موردنظر با سرعت و اطمینان بیشتری در محیطهای محاسباتی اجرا شود. ایمیج کانتینر (Container Image) در داکر یک بسته نرمافزاری سبک، مستقل و قابل اجرا است، که شامل همه موارد مورد نیاز برای اجرای یک نرمافزار میشود: کد (Code)، محیط زمان اجرا (Runtime)، ابزار سیستم (System Tools)، کتابخانههای سیستم (System Libraries) و تنظیمات (Settings). Containerها میتوانند از طریق کانالهای مشخص با یکدیگر ارتباط برقرار کنند و از آنجایی که همه containerها تمامی سرویسهای هسته (Kernel) سیستمعامل واحدی را به اشتراک میگذارند، از منابع کمتری نسبت به ماشینهای مجازی استفاده می کنند.
ایمیج کانتینر زمانیکه روی Docker Engine اجرا شود، به container تبدیل میشود. نرمافزارهای کانتینرشده (Containerized applications) که برای هر دو سیستمعامل لینوکس و ویندوز موجود است، بدون توجه به زیرساختها همیشه یکسان عمل میکنند. درواقع، containerها نرمافزار را از محیط خود جدا کرده و اطمینان حاصل میکنند که علیرغم تفاوتهای بین development و staging، بطور یکسان عمل کنند.
Docker چیست؟
Docker (داکر) یک پلتفرم منبعباز برای ساخت، استقرار (Deployment) و مدیریت نرمافزارهای کانتینرشده است. این فناوری، امکان ایجاد، اجرا و تست پروژههای نرمافزاری را در قالب container قابل حمل و مجزا روی ابر (Cloud)، دیتاسنتر مشتری یا سیستمعاملهای مختلف (مثل ویندوز یا لینوکس) برای توسعهدهندگان (Developers) فراهم میکند. این کار به توسعهدهندگان امکان میدهد تا نرمافزارهای خود را بهصورت container بستهبندی کنند.
توسعهدهندگان میتوانند بدون داکر نیز container ایجاد کنند، اما پلتفرم Swarm چیست؟ این پلتفرم دارای مجموعه ابزارهایی است که توسعهدهندگان را قادر میسازد تا با استفاده از اتوماسیون و یکسری دستورات ساده و صرفهجویی در کار از طریق یک API واحد، containerهای خود را بهراحتی بسازند و مستقر کنند و در هر زمان که بخواهند آنها را اجرا و بهروزرسانی کرده یا متوقف کنند.
Docker چه مزایایی دارد؟
Docker مزایای منحصربفرد خود را دارد که در ادامه به برخی از آنها اشاره میکنیم:
- قابلیت تکرارپذیری: اجرای داکر در هر سیستمی که بتواند آن را اجرا کند، تضمین شده است. مشخصات دقیق Container در فایل Dockerfile ذخیره میشود. با توزیع این فایل در بین اعضای تیم، یک سازمان میتواند تضمین کند که تمام فایلهای image ساخته شده با همان Dockerfile یکسان کار میکنند. علاوهبراین، داشتن محیطی ثابت و مستند، باعث میشود که track کردن نرم افزار شما و شناسایی مشکلات نیز آسانتر شود.
- عدم تداخل تنظیمات: متعلقات و تنظیمات یک container، روی برنامههای دیگر رایانهی شما تاثیر نمیگذارند، حتی اگر یک container دیگر نیز همزمان درحال اجرا باشد. با استفاده از containerهای جداگانه برای هر جزء از یک برنامه (به عنوان مثال، یک وب سرور، رابط کاربری و یا پایگاه داده برای میزبانی یک وبسایت)، میتوانید از مغایرت متعلقات جلوگیری کنید و بدون نگرانی، پروژههای متعددی را روی یک سرور داشته باشید.
- امنیت: جداسازی اجزای مختلف یک برنامه بزرگ در containerهای مختلف میتواند مزایای امنیتی داشته باشد. برای مثال، اگر یک container در معرض خطر قرار بگیرد، بقیهی اجزا امن باقی خواهند ماند. اما به یاد داشته باشید که داکر در بحث امنیت، ضعفهایی هم دارد که در ادامه به آن میپردازیم.
- مدیریت محیط توسعه (Development environment): داکر مدیریت و نگهداری از ورژنهای مختلف را آسان میکند؛ مثلا میتوان ورژنهای مختلف یک وبسایت که از nginx استفاده میکند را ذخیره کرد. شما میتوانید برای هریک از اهداف آزمایش، توسعه و تولید، یک container جداگانه در یک Linode داشته باشید و به راحتی هریک را توسعه دهید.
- یکپارچه سازی مداوم: داکر به عنوان جزئی از سری پیوسته integration با ابزارهایی مانند Travis ، Jenkins و Wercker کار میکند. هر بار که کد اصلی نرم افزار شما به روز شود، این ابزار میتواند نسخه جدید را به عنوان یک Docker Image ذخیره کرده و برچسبگذاری کند. سپس، آن را به Docker Hub منتقل کرده وdeploy کند.
در چه برنامههایی از Docker استفاده کنیم؟
اگر نرمافزار شما در یک یا چند دسته زیر جای میگیرد، استفاده از داکر ممکن است برای شما مناسب باشد:
- یادگیری فناوریهای جدید: اگر میخواهید از ابزارهای جدید – بدون صرف زمان برای نصب و پیکربندی آنها – استفاده کنید، داکر میتواند محیطی جداگانه و یکبار مصرف را برای این منظور به شما ارائه دهد. پروژههای زیادی وجود دارند که Docker Imageهایی با برنامههای ازپیش نصب و پیکربندیشده را نگهداری میکنند. به عنوان مثال، اگر میخواهید یک سیستم ردیابی توزیع شده مانند Zipkin را بررسی کنید، میتوانید به سادگی با دستور زیر، آن را روی localhost داشته باشید:
sudo docker run -d -p 9411:9411 openzipkin/zipkin
- موارد استفاده پایه: اگر برنامه شما به قدری استاندارد یا پایه باشد که با یک ایمیج (Image) پیشفرض داکر کار کند، دریافت ایمیج از Docker Hub نیز راهحل خوبی است. مواردی مانند میزبانی وبسایت با استفاده از یک استک LAMP، استفاده از Reverse Proxy یا تنظیم یک سرور Minecraft اغلب دارای یک ایمیج رسمی و پشتیبانی در Docker Hub هستند. اگر تنظیمات پیشفرض این ایمیجها برای نیازهای شما قابل قبول باشد، دریافت آنها میتواند موجب صرفهجویی در زمان شود. درحالیکه اگر از داکر استفاده نکنید، تنظیمات محیط و نصب ابزارهای ضروری زمان زیادی میبرد.
- توسعهی بیش از یک برنامهبصورتهمزمان: همانطور که قبلا هم اشاره شد، اگر میخواهید برنامههای متعددی را روی یک سرور اجرا کنید، نگهداری هر برنامه در containerهای جداگانه، از مشکلات مربوط به مدیریت متعلقات جلوگیری میکند. بنابراین، توسعهی بیش از یک برنامه بصورت همزمان با استفاده از داکر میتواند ایده خوبی باشد.
- توسعه نرمافزار بصورت تیمی: اگر تیم شما توسعهدهندگانی دارد که با تنظیمات مختلف کار میکنند، داکر راهی مناسب برای ایجاد محیط توسعه فراهم میکند، که نیازی به SSH به یک سرور خارجی ندارد.
در چه مواردی نباید از Docker استفاده کنیم؟
گاهیاوقات استفاده از داکر بهترین راه حل نیست. در اینجا به چند نمونه اشاره میکنیم:
- برنامه شما پیچیده است و یک sysadmin ندارید. برای برنامههای بزرگ و پیچیده، استفاده از یک Dockerfile از پیش ساخته شده یا دریافت یک ایمیج موجود، گزینهی مناسبی نخواهد بود. ساخت، ویرایش و مدیریت ارتباط بین چند container در چندین سرور، کار بسیار زمانبری است.
- بازدهی برنامه برای شما بسیار مهم است. زمانی که بحث بازدهی به میان میآید، داکر در مقایسه با ماشینهای مجازی، عملکرد بهتری دارد. داکر، kernel (کرنل) میزبان را به اشتراک میگذارد و سیستمعامل کامل را شبیهسازی نمیکند. با این حال، داکر هزینههایی در زمینهی بازدهی دارد. فرایندهایی که درون یک container اجرا میشوند، به اندازهی فرایندهایی که در سیستمعامل اصلی اجرا میشوند، سریع نیستند. بنابراین، اگر نیاز دارید که بهترین بازدهی ممکن را از سرور خود داشته باشید، بهتر است از داکر استفاده نکنید.
- شما نمیخواهید بهروزرسانیهای عجیب و غریب انجام دهید! داکر یک تکنولوژی جدید و در حال توسعه است. برای به دستآوردن ویژگیهای جدید، احتمالا باید به طور مرتب بهروزرسانی کنید و نکتهی حائز اهمیت در این روند، این است که پشتیبانی از نسخههای قبلی تضمینشده نیست.
- امنیت برنامه برای شما حائز اهمیت است. همانطور که پیشتر ذکر شد، نگه داشتن اجزای مختلف یک برنامه در containerهای جداگانه، مزایای امنیتی را فراهم میآورد، زیرا اختلال در یک container نمیتواند به راحتی بر سایر سیستمهای شما تاثیر بگذارد. با این حال، رویکرد مبتنی بر container در برنامههای پیچیدهتر، چالشهای زیادی را به همراه دارد. پس، اگر برنامه پیچیدهای دارید و نگران مسئله حفظ امنیت آن هستید، از داکر استفاده نکنید.
- شما میخواهید Clusterسازی کنید. Containerهای داکر میتوانند در سرورهای جداگانه ترکیب شوند تا با Docker Swarm کلاستر بسازد. با این حال، داکر نمیتواند جایگزین ابزارهای تولید و یا اتوماتیکسازی مانند Ansible، SaltStack و Chef باشد. علاوه بر این، داکر اخیرا پشتیبانی از Kubernetes را اعلام کرده است، که یعنی Docker Swarm به عنوان یک مدیر کلاستر مستقل کافی نیست.
- برنامهای با سیستمعامل چندگانه. از آنجایی که Docker Container سیستمعامل میزبان را به اشتراک میگذارد، اگر میخواهید برنامه کاربردی مشابهی را در سیستمعاملهای مختلف اجرا یا آزمایش کنید، به جای این روش، باید از ماشینهای مجازی استفاده کنید. در ادامه به تفاوت میان داکر و ماشینمجازی نیز میپردازیم.
تفاوت Containers و Virtual Machine چیست؟
Containerها و ماشینهای مجازی (VM) دارای تخصیص منابع و مزایای یکسانی هستند، اما هر کدام عملکرد متفاوتی دارند. Container به جای سختافزار، سیستمعامل را مجازی میکند، و از طرفی، Container قابل حمل و کارآمدتر از ماشین مجازی است.
- مشخصاتCONTAINER: Container یک انتزاع در لایه اپلیکیشن است که کدهای نرمافزار و وابستگیهای آن را با هم بستهبندی میکند. چندین Container میتوانند روی یک دستگاه اجرا شوند و هسته سیستمعامل آن را با دیگر Containerها به اشتراک بگذارند، که هر کدام به صورت فرایندهای جداگانه در فضای کاربر اجرا میشوند. Containerها نسبت به VMها حجم کمتری اشغال میکنند، که این ویژگی باعث پلتفرم Swarm چیست؟ میشود بتوانند نرمافزارهای بیشتری را هندل کنند و به ماشین مجازی و سیستمعاملهای کمتری احتیاج داشته باشند.
- مشخصاتVIRTUAL MACHINE: ماشینهای مجازی (VMs) نرمافزارهایی هستند که میتوانند از نظر سختافزاری و بصورت مجازی یک سرور را به چندین سرور تبدیل کنند. هایپروایزر (hypervisor) به چندین ماشین مجازی اجازه میدهد تا روی یک دستگاه اجرا شوند. هر ماشین مجازی شامل یک نسخه کامل از یک سیستمعامل، اپلیکیشن، فایلهای دودویی لازم و کتابخانهها است که دهها گیگابایت حافظه را اشغال میکند. علاوه براین، بیشتر وقتها VMها بسیار کند راهاندازی میشوند.
حال که تفاوت کانتینر و ماشین مجازی را متوجه شدیم، ممکن است این سوال پیش بیاید که با توجه به مزایا و معایب هر یک، آیا میتوان از هر دوی آنها با هم استفاده کرد؟ پاسخ بله است!
Containers و VMs اگر با هم استفاده شوند، انعطافپذیری زیادی برای deploy و مدیریت اپلیکیشنها فراهم میکنند.
آیا باید از Docker Container استفاده کنیم؟
داکر یک راهحل بسیار محبوب برای پیکربندی، ذخیره و به اشتراکگذاری محیط سرور با استفاده از container است. نصب پلتفرم Swarm چیست؟ یک برنامه یا حتی یک استک بزرگ اغلب میتواند به سادگی اجرای دستورات docker pull یا docker run باشد. جداکردن توابع کاربرد در containerهای مختلف نیز مزایایی را در زمینه مدیریت امنیت و متعلقات ارائه میدهد.
با این حال، داکر جایگزین خوبی برای سیستمهای مهندسی و یا مدیریت پیکربندی نیست و رویکرد آن نقاط ضعفی هم دارد. توسعهدهندگان باید دربرابر وسوسهی انتقال همهی برنامههای جدیدشان به داکر، مقاومت کنند!
سؤالات متداول Docker (FAQ)
آیا داکر روی سیستمعاملهای لینوکس، مک و ویندوز اجرا میشود؟
بله. شما میتوانید برنامههای لینوکس، ویندوز و فایلهای اجرایی را در کانتینرهای Docker اجرا کنید. پلتفرم داکر به صورت بومی روی لینوکس (در x86-64، ARM و بسیاری پلتفرم Swarm چیست؟ دیگر از معماریهای CPU) و روی ویندوز (x86-64) اجرا میشود.
در واقع شما میتوانید کانتینرهای خود را روی لینوکس، ویندوز و macOS بسازید و اجرا کنید.
آیا هنگام خروج کانتینر اطلاعاتم را از دست میدهم؟
خیر! هر دادهای که برنامه شما روی دیسک کانتینر مینویسد، تا زمانی که به صراحت کانتینر را حذف نکنید، در محفظه آن حفظ میشود. تمامی اطلاعات ذخیرهشده روی کانتینر پس از توقف کانتینر نیز باقی میماند.
کانتینر داکر تا چه اندازه قابل مقیاس است؟
برخی از بزرگترین مزارع سرور در جهان امروز بر پایه کانتینرها هستند. بسیاری از سازمانهای بزرگ در زمینه وب مانند گوگل و توییتر و ارائهدهندگان پلتفرمهایی مانند Heroku بر اساس فناوری کانتینر در مقیاس پلتفرم Swarm چیست؟ صدها هزار یا حتی میلیونها کانتینر اجرا میشوند.
آیا میتوانم بیش از یک فرآیند را در یک کانتینر داکر اجرا کنم؟
استفاده از این رویکرد اصلا توصیه نمیشود. برای بالا بردن کارایی، هر کانتینر باید به یک مسئله خاص رسیدگی کند. با این حال، بله میتوانید در یک کانتینر چندین سرویس و فرآیند را اجرا کنید.
ایمیج داکر (docker image) چیست؟
ایمیج داکر بستههای اجرایی هستند (همراه با کد برنامه، بستههای نرمافزاری و غیره) به منظور ایجاد کانتینرها. ایمیج داکر را میتوان در هر محیطی از داکر مستقر کرد و کانتینرها را میتوان برای اجرای برنامه در آنجا ایجاد و تنظیم کرد.
DockerFile چیست و چه کاری انجام میدهد؟
داکر فایل یک فایل متنی است که در آن تمام دستورات اجرایی لازم برای ساخت ایمیج در آن نوشته شده است.
Docker Hub چیست و چگونه از آن استفاده کنم؟
داکر هاب یک رجیستری مبتنی بر ابر عمومی است که توسط Docker برای ذخیره ایمیج کانتینرها به همراه امکان “پیدا کردن” و “به اشتراکگذاری” آنها ارائه شده است. ایمیجها را میتوان از طریق دستور docker push به Docker Hub فرستاد.
امیدواریم با خواندن این مقاله با مفاهیم Docker و Container آشنا شده و تفاوت آنها را با ماشین مجازی به خوبی درک کرده باشید. به یاد داشته باشید که قبل از تصمیم به استفاده از این پلتفرم، الزامات هر پروژه را با دقت زیاد بررسی کنید.
داکر Docker چیست و چه کاربردهایی دارد؟
داکر Docker پس از معرفی در سال 2014 با سرعت سرسام آوری در حال پیشرفت است به گونه ای که با افزایش آگاهی کاربران و پشتیبانی کمپانی سازنده، این ابزار روز به روز به محبوبیت بیشتری دست پیدا می کند و تنها تا سال 2018، بیش از 3.5 میلیون اپلیکیشن با استفاده از فناوری داکر در کانتینرها قرار گرفته و بالغ بر 37 میلیارد اپلیکیشن کانتینر شده توسط داکر، در این مدت دانلود شده است. امروز در این مقاله از داناپ قصد داریم تکنولوژی داکر را معرفی کرده و کاربردهای آن را نیز با هم مرور کنیم، پس با ما همراه باشید.
Docker چیست؟
داکر ابزاری است که امکان ساخت، مستقر نمودن و مدیریت پکیج های مورد نیاز برای اجرای یک اپلیکیشن را در اختیار توسعه دهندگان قرار می دهد. این پکیج های کم حجم که در داکر به عنوان کانتینر (Container) شناخته می شوند حاوی ابزارهای ضروری نظیر کتابخانه ها، ران تایم، کدها، تنظیمات سیستم و… هستند.
در داکر هر کانتینر بدون اینکه به کرنل و سیستم عامل منحصر بفردی متکی باشد با CPU، مموری، بلاک I/O و منابع شبکه ای مخصوص به خود اعمال می شود. در حقیقت ساز و کار داکر تا حدودی شبیه به ماشین مجازی است، با این تفاوت که هر کدام از روش بخصوصی در اشتراک گذاری منابع استفاده می کنند.
کانتینرها یک سرور را به روش های مختلفی گسترش می دهند. برای مثال شما می توانید با استفاده از داکر چندین متغیر نمونه (Instances) از وب سرور nginx به همراه کدهای staging را همزمان اعمال کنید؛ البته برخلاف ماشین مجازی، کانتینرهای مستقر شده بر منابع سرور Tax اعمال نمی کنند.
مزایای کانتینر در Docker
اولین مزیت کانتینرها این است که از سیستم عامل های مشترک استفاده می کنند. یعنی استفاده از کانتینرها، محدود به یک سیستم عامل خاص نمی شود. دومین مزیت آنها این است که امکان ادغام و توسعه کدهای را در یک محیط مشترک به توسعه دهندگان می دهد. این مسئله امکان اشتراک گذاری کدها بین توسعه دهندگان اپلیکیشن را فراهم کرده و به این ترتیب در وقت و هزینه، صرفه جویی خواهد شد.
کانتینرها همچنین به توسعه دهندگان این امکان را می دهند که کدهای نوشته شده را در یک محیط مجزا، نگهداری کنند. بنابراین تغییر و به روز رسانی کدها آسان تر خواهد بود. همچنین امکان توسعه یک پروژه بزرگ و تقسیم آن به زیرمجموعه های کوچک تر به کمک کانتینرها در چارچوب داکر وجود دارد. با این تقسیم کار، زمان لازم برای تحویل پروژه به صورت بهینه کاهش می یابد.
علاوه بر موارد فوق، استفاده از کانتینرهای داکر در فضای ابری نیز ممکن است. داکر به گونه ای طراحی شده است که برای بسیاری از اپلیکیشن های DevOps قابل استفاده بوده و به تنهایی نیز برای مدیریت محیط های توسعه نرم افزار در فضای ابری، قابل استفاده است.
عملکرد Docker چگونه است؟
داکر با ارائه یک روش استاندارد برای اجرای کد، عمل می کند. در واقع داکر یک سیستم عامل برای مدیریت کانتینرها است. داکر روی سرور نصب شده و دستورات ساده ای را طراحی می کند که از آنها می توانید برای ساخت، راه اندازی و توقف کانتینرها استفاده کنید.
به بیان ساده، یک توسعه دهنده از کلاینت داکر استفاده می کند تا به هاست دستور دهد که تصاویر داکر را به صورت کانتینرها بسازد، اجرا کند و یا توزیع نماید. در ادامه، هاست این دستور را بررسی کرده و کانتینرها را از نظر اجرای راه دور اپلیکیشن، بازرسی می کند. توسعه دهنده در ادامه می تواند از CLI یا همان واسط خط فرمان (command line interface) برای توقف، حذف و یا راه اندازی مجدد یک کانتینر استفاده نماید. با کمک REST API کلیه مراحل فوق از راه دور نیز قابل انجام است.
Docker Image
در حقیقت هر کدام از کانتینرهای داکر از روی یک تصویر ساخته می شوند؛ شما می توانید با دانلود این تصاویر از وبسایت رسمی https://hub.docker.com/ کانتینرهای مورد نظر خود را بسازید. با استفاده از یک تصویر قادر خواهید بود چندین کانتینر بسازید، برای مثال با استفاده از آخرین تصاویر nginx می توانید برای موارد زیر یک وب سرور کانتینر مستقر کنید :
- توسعه عملیات وب (DevOps)
- تستینگ
- تولید
- وب اپلیکیشن
Docker files
فایل داکر Dockerfile یک فایل متنی است که دستورات مورد نیاز برای پیاده سازی تصاویر داکر را درون خود دارد. وقتی برای بار اول فایل داکر نوشته می شود، اپراتور (Administrator) می تواند با استفاده از دستور docker پلتفرم Swarm چیست؟ build و طبق Command های موجود در فایل تصاویر داکر را بسازد. شما می توانید با استفاده از دستورات و اطلاعات موجود در docker build، از پایداری و ثبات فرآیند توسعه اطمینان حاصل کنید. فایل های داکر با استفاده از دستورات زیر قادر به ساخت تصاویر هستند :
- ADD: فایل ها را از یک منبع در Host درون فایل کانتینر کپی می کند.
- CMD: یک دستور به خصوص را در کانتینر اجرا می کند.
- ENTRYPOINT: هر بار که کانتینر از یک تصویر ساخته می شود، یک اپلیکیشن پیشفرض را برای آن در نظر می گیرد.
- ENV: متغیرهای محیطی را پیاده سازی می کند.
- EXPOSE: یک پورت بخصوص برای شبکه سازی بین کانتینر و دنیای بیرونی مشخص می کند.
- FROM: یک تصویر پایه برای آغاز فرآیند توسعه تعیین می کند.
- MAINTAINER: نام کامل و آدرس ایمیل سازنده عکس را ضمیمه می کند.
- RUN: بخشنامه اجرایی مرکزی برای Dockerfile است.
- USER: نام کاربری اجرا کننده کانتینر را تعیین می کند.
- VOLUME: امکان دسترسی از کانتینر به یک دایرکتوری در ماشین Host را در اختیار کاربر می گذارد.
- WORKDIR: یک path برای اجرای دستور CMD ایجاد می کند.
شما نباید از همه دستورات استفاده کنید، برای مثال در جعبه کد زیر نمونه ای از طرز کار فایل های داکر با استفاده از دستورات MAINTAINER، FROM و RUN را مشاهده خواهید کرد :
پلتفرم Swarm چیست؟
داکر یکی از ابزارهای CRI(Container Runtime Interface)است که ایجاد، توسعه و اجرای اپلیکیشنها را با استفاده از کانتینر(container) آسان میکند. کانتینر به توسعهدهندگان این امکان را میدهد که تمام پیشنیازها و نیازمندیهای اپلیکیشن خود را برای استفاده و اجرا جمعآوری کنند؛ مانند کتابخانهها (Libraries) و زیرساختهای لازم.
میتوان گفت که داکر به توسعهدهندگان این اطمینان را میدهد که میتوانند اپلیکیشن خود را بدون نگرانی از سیستمهای میزبان برنامه خود در مرحله توسعه و تست و بر روی سیستمهای مختلف، بدون هیچگونه اشکال و به صورت کاملاً مشابه اجرا کنند و مشکلی از بابت تغییر سیستمعاملهای اجراکننده برنامه خود نخواهند داشت.
داکر تا حدی شبیه به ماشین مجازی (Virtual Machine) است با این تفاوت که در ماشین مجازی، قسمتی از سختافزار سیستم به ماشین مجازی اختصاص داده میشود و روی آن یک سیستمعامل کامل نظیر ویندوز یا لینوکس نصب میشود. در واقع میتوان گفت در ماشین مجازی امکانات سختافزاری سیستم تقسیم میشود و بر روی هر قسمت، سیستمعامل بخصوصی بالا میآید اما در داکر این طور نیست. در داکر امکانات سختافزاری به تناسب نیاز هر کانتینر به صورت موقت اختصاص داده میشود و داکر این امکان را فراهم میآورد که اپلیکیشنها برای مثال روی کرنل لینوکس اجرا شوند. در این حالت دیگر نیازی به نصب پیشنیازها و نیازمندیهایی که اپلیکیشن ما میخواهد و به طور پیشفرض روی سیستم وجود ندارد، نیست.
داکر ابزاری است متنباز (Open Source) و کدهای آن بر روی گیتهاب قرار دارد و هر فرد علاقهمند میتواند در توسعه آن مشارکت کند.
داکر در سال ۲۰۱۳ شروع به کار کرد و توسط شرکت داکر توسعه داده میشود. این پلتفرم Swarm چیپلتفرم Swarm چیست؟ ست؟ سرویس به دو نوع رایگان و پولی در دسترس است.
از مزایای داکر در یک نگاه :
- داکربه سرعت تجارب جدید مشتری را تحویل داده و فرآیندهای موجود را دگرگون می کند.
- دستیابی به چابکی و انعطاف پذیری بهینه برای رفع نیازهای تجاری.
- بدون کم کردن نوآوری ، امنیت را تأمین کنید
- داکر Docker برای چه کاری مناسب است ؟
- داکر Docker با مجازی سازی چه فرقی دارد؟
- داکر Docker برای چه افرادی ساخته شده؟
- چه کسانی از داکر استفاده میکنند؟
- آیا یادگیری داکر در آینده شغلی من تاثیرگذار است؟
- داکر: بستر مدرن برای نوآوری با سرعت بالا:
سرفصل ها و عنوان دوره آموزش داکر :
Docker Administration and Operation Course :
1- Application Modernization , introduce Devops … , Continuous Integration and Delivery
گام بزرگ بیت تورنت برای ورود به دنیای خبر
بهتازگی بیت تورنت برای قدرت بخشیدن به سیستم جدید خود یعنی پلتفرم خبری این شرکت، تهیه کننده برجسته سی.ان.ان را به خدمت گرفته است.
وبسایت خبری تحلیلی Engadget، شاید نام بیت تورنت برای بسیاری از ما تنها با اشتراک و دانلود دادهها همراه باشد ولی در عمل فعالیتهای این شرکت بسیار گستردهتر از این مورد بهحساب میآیند.
یکی از حوزههای کاری نسبتا جدید بیت تورنت، عرصه خبر است و این شرکت بهتازگی سیستمی به نام اخبار بیت تورنت را بهعنوان یک کانال استریم خبر راهاندازی کرده است.
حال مسئولان این شرکت برای قدرت بخشیدن به این شبکه نوپا به دنبال فردی برجسته در دنیای خبر رفتهاند و یکی از تهیهکنندگان قدیمی سی.ان.ان را به استخدام خود درآوردهاند.
این فرد که هریسون بورمن نام دارد در رده رسانهای فردی بسیار شناخته شده بهحساب میآید و حتی توانسته است بهعنوان تهیه کننده، جایزه امی را نیز دریافت کند.
حال قرار است تا بورمن مدیریت فرایند کاری این کانال خبری جدید را بر عهده بگیرد تا بهزودی و بر اساس گزارشها پیش از انتخابات ریاست جمهوری آمریکا شاهد اجرای نخستین فاز عملیاتی شبکه اخبار بیت تورنت باشیم.
ارز دیجیتال بیتتورنت (BTT) چیست؟
بیتتورنت (BTT) یا همان “بزرگترین پروتکل به اشتراکگذاری فایل پلتفرم Swarm چیست؟ غیر متمرکز در جهان” چیست؟
بیتتورنت یک پروتکل به اشتراکگذاری فایل همتا به همتا است که اخیرا کریپتوکارنسی خود با نماد BTT را راهاندازی کرده است.
این شبکه به شما این امکان را میدهد که چندین نوع فایل مختلف را به سرعت و به طور رایگان از اینترنت دانلود کنید.
در حال حاضر بیش از ۱۷۰ میلیون نفر ماهانه از این پروتکل استفاده میکنند.
مواردی که در این مقاله بورسینس به آن پرداخته میشود عبارتند از:
• بیتتورنت چگونه کار می کند؟
• تیم بیتتورنت و پیشرفت این پروژه
• معاملات و خرید و فروش BTT
• نحوهی خرید توکن BTT
• کیف پول BTT
بیتتورنت چگونه کار میکند؟
به منظور شفافسازی موضوع، بهتر است تا به صورت جداگانه به بررسی بیتتورنت ( پروتکل اصلی همتا به همتا) و BTT ( ارز دیجیتالی که برای این پروتکل به عنوان یک انگیزهی پولی عمل میکند) بپردازیم.
بیتتورنت یک پروتکل ارتباطی همتا به همتا است که برای فایلها و دیگر انواع دادهها مورد استفاده قرار میگیرد.
همانند فناوری بلاکچین، بیتتورنت نیز یک سیستم توزیع شده بدون موجودیت مرکزی است.
نحوهی کار کردن آن بدین صورت است که :
فایلهای میزبان Seed به عنوان تورنت (torrent) نیز شناخته میشوند.
در هنگام میزبانی، Seed ها تورنتها را به چندین بخش تقسیم میکنند تا شما بتوانید به طور موثرتری آنها را دانلود کنید.
زمانی که فایلی را از بیتتورنت دانلود میکنید، بخشهای مختلفی از آن فایل را از چندین seed دریافت میکنید.
در زمان دانلود و پس از اتمام کار میتوانید در جهت کمک به شبکه، با انتخاب خود به یک seed تبدیل شود.
با عدم انتخاب گزینهی seed، شما عنوان leech را کسب میکنید.
بیتتورنت برای بقای سیستم خود نیاز به seed دارد، بنابراین تبدیل به leech شدن چندان مطلوب نیست.
به کل شبکهی آپلودکنندهها (seeds) و دانلوکنندهها برای یک فایل خاص، swarm گفته میشود.
معماری توزیع شده بیتتورنت به شما این امکان را میدهد تا فایلهای بزرگ را به صورت ارزان و کارآمد آپلود و دانلود کنید و به کاهش تراکم اینترنت شما نیز کمک میکند.
توکن BTT
بیتتورنت مدتها پیش از توکن BTT ایجاد شد. حتی امروزه شما میتوانید از پروتکل رایگان بدون توکن نیز استفاده کنید.
با توجه به وایت پیپر این پروژه:
” BTT به عنوان یک مکانیزم کلی برای انجام معاملات در منابع محاسباتی مشترک بین مشتریان بیتتورنت و یک بازار شفاف از درخواست کنندگان سرویس و ارائه دهندگان سرویس عمل میکند.”
در کنار BTT، تیم توسعه این پروژه ” BitTorrent Speed” را نیز معرفی کردهاند.
از آنجاییکه هیچ گونه انگیزه مالی برای نقش seed در این پروتکل اصلی در نظر گرفته نشده است، swarm ها اغلب به صورت نابهنگام از بین میروند.
در جهت حل این مشکل، BitTorrent Speed پاداشی را (توکن BTT) به کاربرانی که پس از دانلود فایل به seed بودن ادامه میدهند، ارائه میکند.
در طرف دیگر معادلهی BTT، شما میتوانید اولویت دسترسی به seed ها، در دسترس بودن مداوم یک فایل و استفاده از منابع دیگر را با پرداخت توکن خود بخرید.
هدف نهایی جهت پیادهسازی BTT این است که، بیتتورنت به یک اکوسیستم محتوا از جمله تحویل محتوا، ذخیرهسازی غیرمتمرکز و پراکسیها تبدیل شود.
عرضهی کلی BTT برابر با ۹۹۰،۰۰۰،۰۰۰،۰۰۰ است، که از این توکنها :
• ۲۰ درصدشان به بنیاد ترون فرستاده شدهاند
• ۱۹٫۹ درصدشان در اکوسیستم بیتتورنت باقی مانده است
• ۱۹ درصد از آن در اختیار تیم و بنیاد بیتتورنت قرار دارد
• ۱۷ درصد آن به صورت خصوصی، عمومی و فروش seed فروخته شده است
• ۱۰٫۱ درصد آن متعلق به بخشی از یک برنامه ۶ ساله Tron airdrop است
• ۱۰ درصد آن نیز متعلق به بخشی از برنامه AirDrop BitTorrent است
• در نهایت نیز ۴ درصد از آن به صورت توکنهای مشارکتی است
تیم بیتتورنت و پیشرفت این پروژه
Bram Cohen ، بیتتورنت را در ماه آپریل ۲۰۰۱ ایجاد و نسخه جدیدی از آن را نیز در سال ۲۰۱۳ منتشر کرد.
در ماه ژوئن سال ۲۰۱۸، جاستین سان (موسس Tron) بیتتورنت را به مبلغ ۱۲۰ میلیون دلار در جهت توسعهی پروژه Atlas خرید.
Cohen در حال حاضر دیگر با این شرکت همکاری نمیکند و چندین نفر دیگر از اعضای اصلی نیز این شرکت را ترک کردند.
بیتتورنت به دنبال این خرید، در نتیجهی عرضه اولیه (IEO) از طریق بایننس مبلغ ۷.۲ میلیون دلار را جمعآوری کرد. هنوز هم ادغام این دو شرکت غیرمتمرکز، جای پیشرفت زیادی دارد.
در حال حاضر BitTorrent Speed در دسترس نیست، اما این تیم بیان کردند که بزودی آن را راهاندازی خواهند کرد.
علاوه بر این، پروژهی BitTorrent Live (یک سرویس پخش زنده ویدئو)، در حال پذیرش ثبتنام برای نسخهی بتای پروژه است.
با این حال، این تیم هنوز تاریخ دقیق انتشار این محصول را اعلام نکردهاند.
رقابت
با بیش از ۱۰۰ میلیون کاربر Tron و بیتتورنت، این پروژه در حال رهبری سیستمهای به اشتراکگذاری فایل همتا به همتا است.
پلتفرم معروف دیگر در زمینهی به اشتراکگذاری فایل (مبتنی بر فناوری بلاکچین)،Upfiring است.
پلتفرم Upfiring هر فایلی را که seeder ها میزبانی میکنند رمزگذاری میکند، در حالی که در بیتتورنت این چنین نیست.
با توجه به موارد استفادهی بی شمار از مقولهی به اشتراکگذاری فایل ها، به نظر میرسد که برای هر دوی این پلتفرمها فضای رشد بسیاری وجود داشته باشد.
معاملات توکن بیتتورنت
ارز دیجیتال بیتتورنت، عنوان یکی از بهترین عملکردها را در میان کریپتوکارنسیها در سال ۲۰۱۹ به خود اختصاص داد.
BTT با قیمت عرضهی اولیه ۰٫۰۰۰۱۲ دلار راهاندازی شد، و پس از مدتی معاملات پرنوسان در اویل، قیمت آن در حدود ۰٫۰۰۰۸ دلار تثبیت شد.
قیمت این ارز دیجیتال از اواسط ماه می شروع به بالا رفتن کرد و در پایان ماه می ۲۰۱۹ به اوج قیمتی خود یعنی ۰٫۰۰۱۸ دلار رسید.
به نظر نمیرسد که این صعود قیمت در نتیجهی خبری خاص رخ داده باشد، بنابراین میتوانیم این افزایش قیمت را به روند بازار در آن زمان ربط دهیم.
توکن به چه معناست؟
یازده سال پیش یک سیستم پرداخت نظیر به نظیر و یک ارز غیرمتمرکز به نام بیت کوین (BTC) راهاندازی شده است که معاملات آنلاین ایمن را امکانپذیر میکند. از آن زمان، بازار خرید ارز دیجیتال در حالیکه مفاهیم جدیدی از داراییهای دیجیتالی مانند توکن ارزهای رمزپایه را معرفی میکند، به سرعت در حال توسعه است. اما معنی توکن چیست؟ چند نوع توکن وجود دارد؟ در این مقاله از تترلند، به این سوالات پاسخ میدهیم.
مدتها بعد از معرفی اولین رمزارز دیجیتال در بازار خرید ارز دیجیتال ، جهان وارد دوران ارز دیجیتال شد. امروزه میتوان هزاران کالا را با استفاده از PayPal یا WebMoney در آمازون و سایر خدمات آنلاین خریداری کرد. با این حال، اینها هنوز سیستمهای پرداخت متمرکز هستند که ممکن است دارای عدم امنیت و شفافیت باشند.
توکن و رمزارزها
در هسته آن، توکن یک رشته رمزگذاری شده شامل اعداد و حروف است. بسته به زمینه، توکن در زمینه ارزهای رمزنگاری شده ممکن است معانی مختلفی داشته باشد. یک توکن یا ممکن است بهطور کلی ارز رمزنگاری شده را تعریف پلتفرم Swarm چیست؟ کند (BTC ، ETH ، EOS و غیره) یا به ارز دیجیتالی اشاره دارد که بر روی یک بلاک چین خاص ساخته شده است (ONT ، USDT ، BAT و غیره).
تعریف توکن به شرح زیر است:
بهطور کلی، توکن یک ارز دیجیتال است که واحد ارزش خاصی را به همراه دارد.
انواع توکن ها
عرضه اولیه سکه (ICO) در سال 2017، تعاریف جدیدی از رمز ارزها را در بازار خرید ارز دیجیتال ارائه داد. هنگام سرمایهگذاری در راهاندازی یک رمزارز خاص در بازارخرید ارز دیجیتال، سرمایهگذار امیدوار است که ارزش توکنها بهزودی افزایش یابد و هزینههای اولیه را جبران کند. توکن امنیتی، سهم پروژه خریداری شده توسط یک سرمایهگذار را نشان میدهد. همچنین توجه داشته باشید که توکنهای امنیتی معمولاً تحت نظارت دقیقی قرار دارند.
رسوایی اخیر پیرامون بلاک چین TON و رمز GRAM آن، نتیجه نظارت دقیق کمیسیون امنیتی صرافی ایالات متحده (SEC) است. این ادعا میکند که GRAM یک امنیت است.
از امروز، چندین پروژه وجود دارد که هدف آنها کمک به استارتآپهای بلاک چین برای صدور توکنهای امنیتی است. Polymath استاندارد توکن ERC-1400 را که بر اساس ST20 ساخته شده است (استاندارد توکن امنیتی) معرفی کرد. Swarm یک زیرساخت باز برای تامین امنیت دیجیتالی در بازار خرید ارز دیجیتال است که مدیریت کامل مدت زمان یک عرضه Token Security (STO) را ارائه میدهد.
توکنهای کمکی، دسترسی به محصولات و خدمات راهاندازی جدید را فعال میکنند.
طبق bitcoin wiki، توکنهای سودمند انواع این توکنها هستند که به صاحب آنها این امکان را میدهد تا خدمات و اقلام مختلف خدمات را خریداری کند. از توکنهای کمکی برای تأمین اعتبار پروژههای زیرساخت مشترک استفاده میشود که قبلاً نمیتوانستند چنین بودجهای را دریافت کنند.
بیشتر برنامههای غیرمتمرکز (dApps) بر روی بلاک چین Ethereum ساخته شده اند.
در نتیجه، بیشتر توکنهای کاربردی dApps، توکنهای مبتنی بر Ethereum هستند که به استاندارد توکن ERC-20 نیز اشاره میکنند. توکنهای DApps باعث میشود که یک برنامه به درستی کار کند.
نمونهای از توکنهای کاربردی:
توکن FTX (FTT) یک توکن سودمند مبادله مشتقات ارز رمزنگاری شده FTX در بازار خرید ارز دیجیتال است. این توکن بر روی شبکه Ethereum در حال اجرا است و دسترسی کاربران را به خدمات اصلی صرافی فروش یا خرید ارز دیجیتال فراهم میکند.
توکنهای امنیتی | توکنهای کمکی |
بهعنوان یک سرمایهگذاری در نظر گرفته میشود | بهعنوان یک سرمایهگذاری در نظر گرفته نمیشود |
تحت نظارت معمول هستند | فاقد مقررات پلتفرم Swarm چیست؟ و نظارت هستند |
فراهم کردن سهم پروژه برای سرمایهگذاران | فراهم کردن دسترسی به ویژگیها و خدمات یک پروژه |
استانداردهای توکنها
توکنها میتوانند قابل تعویض و یا غیرقابل تعویض باشند. بهعنوان مثال، یک اسکناس 1 دلاری یک دارایی قابل تعویض است زیرا میتوانید آن را با ده سکه مبادله کنید و همچنان همان مقدار ارزش داشته باشید. در حالیکه توکنهای غیر قابل تعویض منحصر به فرد و یک نوع هستند.
استاندارد ERC-20 نوعی رمزگذاری قابل تعویض را ارائه میدهد که مبتنی بر بلاک چین Ethereum است.
تفاوت توکن با کوین در چیست؟
برخی ممکن است بگویند هیچ تفاوتی بین توکن و کوین وجود ندارد زیرا هر دو دارایی رمزگذاری شده در بازار خرید ارز دیجیتال هستند. این کاملا درست است. با این حال، تفاوتی بین این دو نوع ارزهای رمزپایه وجود دارد.
یک کوین، بلاک چین مخصوص به خود را دارد و هدف آن حفظ یک محیط امن در دفتر توزیع شده و بازار خرید ارز دیجیتال است. و بهعنوان ابزار پرداخت میتواند استفاده شود.
بیت کوین BTC یک کوین مخصوص بلاک چین بیت کوین است، Ether (ETH) یک کوین مخصوص برای بلاکچین Ethereum است و غیره.
توکن معمولاً بر بستر بلاک چین خاصی ساخته میشود و برای حفظ اکوسیستم پروژه در نظر گرفته شده است. توکن توسط یک پروژه صادر میشود تا در واقع واحدی از ارزش، خدمات دسترسی و غیره باشد.
OmiseGO (OMG) توکن مبتنی بر Ethereum بر یک بستر مالی OmiseGO است. این توکن برای سهولت پرداخت در شبکه OmiseGO طراحی شده است.
موارد استفاده از توکنها
توکنها به دلایل زیر استفاده میشوند:
- دسترسی به خدمات یک پروژه (کیف پول، مبادلات، dApps و غیره)
- ایجاد یک محیط خاص از یک پروژه خاص
- واحد با ارزشی باشند
- روش پرداخت باشند. (DEXs ، dApps و غیره)
- بهعنوان یک سرمایهگذاری باشند
- پاداش باشند
جمعبندی
صنعت ارزهای دیجیتال و بازار خرید ارز دیجیتال، ضمن معرفی فنآوریها، راهحلها و تعاریف کاملاً جدید، به سرعت در حال توسعه است. توکنهای بازار ارزهای دیجیتال قسمتی حیاتی و مهم هستند که این صنعت را به جلو سوق میدهند.
دیدگاه شما