داکر یک پلتفرم نرمافزاری است که با استفاده از مجازیسازی سطح سیستم عامل، اپلیکیشنها را در کانتینرهای مجزا اجرا میکند. داکر به توسعهدهندگان و مدیران سیستم این امکان را میدهد که اپلیکیشنهای خود را به راحتی بسازند، استقرار دهند و مدیریت کنند. داکر با زبان برنامه نویسی گو نوشته شده است و در سال ۱۳۹۲ خورشیدی (۲۰۱۳ میلادی) منتشر شد.
داکر یک پلتفرم نرمافزاری است که برای ساخت، اجرا، مدیریت و توزیع اپلیکیشنهای مبتنی بر کانتینر استفاده میشود. کانتینرها محیطهای اجرایی کوچک و سبک هستند که به طور مشترک از هسته سیستم عامل استفاده میکنند اما در عین حال در یک محیط ایزوله و کاملا جدا از هم قرار دارند. داکر براساس معماری کلاینت-سرور کار میکند. این سرویس شامل کلاینت، میزبان و رجیستری داکر میباشد.
کلاینت برای اجرای دستورات مختلف کاربرد دارد و هاست نیز وظیفه اجرای Daemon را برعهده دارد. رجیستری داکر نیز محل ذخیرهسازی تصاویر کانتینر است. داکر با استفاده از زبان برنامهنویسی Go توسعه داده شده است. داکر به شما امکان میدهد تا یک تصویر کانتینر را با تمام وابستگیهای لازم بسازید و آن را به راحتی در هر محیط دلخواه خود اجرا کنید. داکر باعث سادهسازی فرآیند توسعه، تست، استقرار و پشتیبانی نرمافزار میشود.
داکر ویژگیهای متعددی را فراهم میسازد. در این بخش از مقاله «Docker چیست» برخی از ویژگیهای داکر فهرست شدهاند:
- پرتابلیت (Portability): داکر به توسعهدهندگان این امکان را میدهد که اپلیکیشنهای خود را به راحتی بین محیطهای مختلف منتقل کنند، بدون نگرانی از تغییرات سختافزار یا سیستم عامل.
- عملکرد بالا (High Performance): داکر با استفاده از مجازیسازی سطح سیستم عامل، منابع سختافزار را به صورت بهینه و کارآمد به کانتینرها تخصیص میدهد، بدون نیاز به اجرای یک سیستم عامل کامل برای هر کانتینر.
- مدیریت ساده (Simple Management): داکر با استفاده از ابزارهای خود، مانند Docker Engine ، Docker Compose ، Docker Hub و Docker Swarm ، فرآیندهای ساخت، استقرار، توزیع و مقیاسپذیری اپلیکیشنهای کانتینربندی شده را ساده و یکپارچه میکند.
- امنیت بالا (High Security): داکر با استفاده از مکانیسمهای امنیتی مانند Namespace ، Cgroups ، Seccomp ، Capabilities و AppArmor ، هر کانتینر را در یک محیط ایزوله و محافظت شده اجرا میکند، که جلوگیری از نفوذ و تأثیرگذاری بین کانتینرها را تضمین میکند.
دستورات داکر
دستورات داکر دستورالعملهایی هستند که به شما امکان میدهند با تصاویر و کانتینرهای داکر کار کنید. آموزش داکر به شما در بسیاری از پروژهایتان کمک می کند. برخی از دستورات پرکاربرد داکر عبارتند از:
- docker pull: برای دانلود یک تصویر (image) جدید از کتابخانه داکر
- docker run: برای ایجاد و اجرای یک کانتینر (container) جدید از یک تصویر مشخص
- docker ps: برای لیست کردن کانتینرهای در حال اجرا یا متوقف شده
- docker logs: برای دیدن خروجی یک کانتینر در حال اجرا
- docker exec: برای اجرای یک shell یا یک دستور در داخل یک کانتینر در حال اجرا
- docker stop: برای متوقف کردن یک کانتینر در حال اجرا
- docker kill: برای توقف کامل یک کانتینر در حال اجرا
- docker cp: برای جابهجایی فایل یا دایرکتوری بین کانتینر و هاست
Docker Hub
Docker Hub یک سرویس میزبانی شده است که توسط Docker ارائه میشود برای پیدا کردن و به اشتراک گذاری تصاویر کانتینر با تیم شما. توجه داشته باشید که آموزش داکر یکی از مهم ترین مهارت هایی است که نیاز است شما بیاموزید ویژگیهای اصلی آن عبارتند از:
- مخازن خصوصی: برای push و pull کردن تصاویر کانتینر
- ساخت خودکار: برای ساخت خودکار تصاویر کانتینر از GitHub و Bitbucket و push کردن آنها به Docker Hub
- کتابخانه بزرگ: برای مشاهده و دانلود بیش از 100 هزار تصویر کانتینر از نرمافزارهای تجاری، پروژههای متنباز و جامعه Docker
ساخت یک کانتینر با دستور docker run
برای اجرای یک کانتینر با دستور docker run، شما باید نام تصویر، نام کانتینر و دستوری که میخواهید اجرا کنید را مشخص کنید. همچنین میتوانید از گزینههایی مانند -it برای اجرا در حالت تعاملی، -d برای اجرا در حالت جدا شده و –publish برای نمایش پورتها استفاده کنید. به عنوان مثال، دستور زیر یک کانتینر جدید با نام container_name از تصویر image_name ایجاد و آن را با دستور bash اجرا میکند:
`docker run -it -d –name container_name image_name bash`
سپس، اگر بخواهید وارد کانتینر شوید (برای اجرای دستورات درون کانتینر به صورت تعاملی)، میتوانید از دستور docker exec استفاده کنید:
برای نسبت دادن یک پورت به یک کانتینر موجود، راههای مختلفی وجود دارد:
- میتوانید کانتینر فعلی را متوقف کنید و یک کانتینر جدید با همان تصویر اولیه و با نسبت دادن پورت مورد نظر اجرا کنید. برای این کار، باید از گزینه -p در دستور docker run استفاده کنید. به عنوان مثال:
`docker run -p 81:80 –name httpd-container httpd`
این دستور یک کانتینر جدید با نام httpd-container از تصویر httpd اجرا میکند و پورت 81 هاست را به پورت 80 کانتینر نسبت میدهد.
- میتوانید کانتینر فعلی را تغییر دهید و یک تصویر جدید از آن بسازید. سپس از تصویر جدید یک کانتینر جدید با نسبت دادن پورت مورد نظر اجرا کنید. برای این کار، باید از دستور docker commit استفاده کنید. به عنوان مثال:
`docker commit test01 test02`
`docker run -p 81:80 –name test02-container test02`
این دستورات یک تصویر جدید با نام test02 از کانتینر test01 میسازند و سپس یک کانتینر جدید با نام test02-container از تصویر test02 اجرا میکنند و پورت 81 هاست را به پورت 80 کانتینر نسبت میدهند.
- میتوانید فایل hostconfig.json را در مسیر /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json ویرایش کنید و پورت مورد نظر را به بخش PortBindings اضافه کنید. سپس باید سرویس docker را ریاستارت کنید. به عنوان مثال:
`”PortBindings”: { “80/tcp”: [ { “HostIp”: “”, “HostPort”: “81” } ] }`
مرسی از مطالب خوبتون
کانتینرهای چیه درمورد این هم توضیح بدید