داکر (Docker) یک ابزار مدیریت کانتینر است که امکان اجرای برنامهها در محیط مجازیسازی شدهای فراهم میکند. داکر با ارائه راه حلی سبک برای مجازیسازی، فرایند توسعه، تحویل و اجرای برنامهها را در محیطهای مبتنی بر لینوکس تسهیل کرده است.
داکر در سال 2013 توسط Solomon Hykes توسط شرکت dotCloud معرفی شد. هدف اصلی آن، سادهسازی فرایند اجرای برنامهها در محیطهای مبتنی بر لینوکس بود. با افزایش محبوبیت داکر، در سال ۲۰۱۴ شرکت Docker Inc تشکیل شد تا به توسعه مداوم این تکنولوژی بپردازد.
امروزه داکر به یک استاندارد برای ساخت، حمل و اجرای برنامهها در محیطهای کانتینری شده تبدیل شده است. استفاده از داکر مزایای متعددی نظیر سرعت بالای توسعه برنامهها، سادگی مجازیسازی، نصب سریع برنامهها و مدیریت آسان کانتینرها را به همراه داشته است. در این مقاله قصد داریم در ادامه آموزش رایگان لینوکس، نحوه نصب و استفاده از این تکنولوژی مهم را در محیطهای لینوکس آموزش دهیم.
مفاهیم پایهای Docker
Docker شامل چندین مفهوم و فرآیند اصلی است که هر یک نقش مهمی در ایجاد، مدیریت و اجرای محیطهای برنامهنویسی در Container ها دارند. برای آشنایی با نحوه کار با Docker، ابتدا باید با این مفاهیم آشنا شویم:
- Images
Images یا تصاویر داکر، مجموعهای از لایههای فایل سیستم هستند که یک برنامه کاربردی و وابستگیهای آن را تشکیل میدهند. Images قالب استانداردی برای ذخیره و انتقال برنامهها در Docker فراهم میکنند.
- Containers
کانتینرها محیطی مجازی برای اجرای برنامهها هستند که از Images ایجاد میشوند. هر Container یک Image و مجموعهای از تنظیمات را دارد که برنامه را اجرا میکند.
- Dockerfile
یک فایل متنی است که دستورات برای ساخت یک Docker Image را شامل میشود. به کمک Dockerfile میتوان Images سفارشی ساخت.
- Docker Hub
مخزن مرکزی برای اشتراکگذاری تصاویر Docker است. Images رسمی و تایید شده زیادی در Docker Hub موجود هستند.
- معماری Docker
Docker یک معماری Client-Server دارد. Docker daemon یک فرایند پسزمینه در لینوکس است که برای مدیریت اجزای Docker مانند Containers ،Images ،Network و Volumes مسئول است. Docker Client با Docker daemon ارتباط برقرار میکند تا دستورات Docker را اجرا کند.
کار با Docker به چه صورت است؟
حالا که با مفاهیم پایهای Docker آشنا شدیم، میتوانیم بهتر نحوه کار با این سرویس را متوجه شویم. کار با Docker از طریق ارتباط با Docker daemon انجام میشود. Docker daemon یک پردازه (process) پسزمینه در محیط لینوکس است که مسئولیت اصلی مدیریت و اجرای کانتینرها و تصاویر Docker را برعهده دارد.
Docker client یک برنامه فرمانخطی (CLI) است که کاربران از طریق آن میتوانند با Docker daemon ارتباط برقرار کنند و دستورات مورد نیاز خود را برای مدیریت Docker ارسال نمایند. این دستورات توسط Docker daemon دریافت و مورد پردازش قرار میگیرند و نتایج اجرای آنها بازگردانده میشود.
برای مثال، زمانیکه شما یک تصویر Docker با دستور docker pull دریافت میکنید، در واقع Docker client درخواست دریافت تصویر را برای Docker daemon ارسال میکند و Docker daemon با دریافت این درخواست، به دریافت آن تصویر از مخزن مربوطه (Docker Hub) اقدام و نتیجه را برمیگرداند.
از طریق همین ارتباط و تبادل دستورات و دادهها بین Docker client و Docker daemon است که تمامی مدیریتهای لازم بر روی تصاویر و کانتینرهای Docker انجام میپذیرد.
نحوه نصب Docker بر روی لینوکس
نصب Docker بر روی لینوکس چندین مرحله اصلی دارد. این فرآیند ممکن است بسته به انواع توزیع لینوکس که استفاده میکنید متفاوت باشد. در اینجا روش نصب بر روی توزیعهای محبوب مانند Ubuntu (که مبتنی بر Debian است)، Fedora و CentOS (که مبتنی بر Redhat هستند) را توضیح میدهیم:
نصب Docker بر روی Ubuntu (سایر توزیعهای مبتنی بر Debian)
- بهروزرسانی مخازن نرمافزاری
قبل از هر چیز، لازم است مخازن نرمافزاری خود را بهروزرسانی کنید. برای این کار، دستور «sudo apt update» را در خط فرمان وارد کنید.
- نصب بستههای مورد نیاز
برای دانلود و نصب بستهها از مخازنی که از پروتکل امن HTTPS استفاده میکنند، باید ابتدا برخی بستههای خاص نصب شوند. این بستهها امکاناتی را فراهم میکنند که برای برقراری ارتباط امن با مخازن HTTPS ضروری هستند. برای این کار باید دستور زیر را وارد کنید:
1 | sudo apt install apt-transport-https ca-certificates curl software-properties-common |
- شروع به کار و بررسی Docker
پس از نصب Docker، باید آن را راهاندازی کنید تا بتوانید از آن استفاده کنید. این کار بهوسیله سیستم مدیریت سرویسهای سیستم عامل، مانند systemd در اکثر توزیعهای مدرن لینوکس انجام میشود.
برای راهاندازی سرویس Docker، دستور زیر را در ترمینال وارد کنید:
1 | sudo systemctl start docker |
این دستور سرویس Docker را فعال میکند.
نصب Docker بر روی Fedora
- افزودن مخزن Docker
در اولین قدم، باید ابزارهای مورد نیاز برای افزودن مخزن را نصب کرده و سپس مخزن Docker را اضافه کنید. برای این کار باید دستور زیر را وارد کنید:
1 | sudo dnf -y install dnf-plugins-core |
1 | sudo dnf config-manager --add-repo |
- نصب Docker CE
Docker CE را نصب کنید. برای این کار، از دستور «sudo dnf install docker-ce» استفاده کنید.
- شروع به کار و بررسی Docker
Docker را راهاندازی کنید و با وارد کردن دستور زیر، وضعیت آن را بررسی کنید:
1 | sudo systemctl start docker |
1 | sudo systemctl status docker |
نصب Docker بر روی CentOS (توزیعهای مبتنی بر Red Hat)
- نصب بستههای مورد نیاز
ابتدا بستههایی که برای دسترسی به مخزن Docker لازم هستند را نصب کنید. برای این کار، دستور زیر را وارد کنید:
1 | sudo yum install yum-utils device-mapper-persistent-data lvm2 |
- افزودن مخزن Docker
با وارد کردن دستور زیر، مخزن Docker را به سیستم خود اضافه کنید:
1 | sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
- نصب Docker CE
در این مرحله، نوبت به نصب Docker CE میرسد. برای این کار، دستور زیر را وارد کنید:
1 | sudo yum install docker-ce |
- شروع به کار و بررسی Docker
سرویس Docker را راهاندازی کنید و با وارد کردن دستور زیر، وضعیت کارکرد آن را بررسی کنید:
1 | sudo systemctl start docker |
1 | sudo systemctl status docker |
۷ نکته طلایی که بعد از نصب Docker در لینوکس باید رعایت کنیم
بعد از اینکه مراحل نصب را انجام دادید، نکات مهمی وجود دارند که باید آنها را رعایت کنید:
- اضافه کردن کاربر به گروه Docker
برای استفاده از Docker بدون نیاز به sudo، با استفاده از دستور زیر کاربر خود را به گروه docker اضافه کنید:
1 | sudo usermod -aG docker ${USER} |
پس از این کار، باید سیستم یا session کاربری خود را مجدد بارگذاری کنید.
- راهاندازی خودکار Docker
اگر میخواهید Docker در هنگام راهاندازی سیستم بهصورت خودکار شروع به کار کند، دستور زیر را اجرا کنید:
1 | sudo systemctl enable docker |
- بررسی وضعیت Docker
پس از نصب و راهاندازی، وضعیت Docker را بررسی کنید تا مطمئن شوید که بهدرستی نصب شده و در حال اجرا است. برای این کار از دستور زیر استفاده کنید:
1 | sudo systemctl status docker |
- بهروزرسانیها
حتما سیستم خود را بهطور مرتب بهروز نگه دارید. برای این کار از آخرین نسخههای امنیتی و بهبودهای Docker استفاده کنید.
- انجام تنظیمات امنیتی
مطمئن شوید که تنظیمات امنیتی Docker را بهدرستی انجام دادهاید. از جمله اینکه اطمینان حاصل کنید که فقط کاربران مجاز قادر به اجرای دستورات Docker هستند.
- استفاده از Docker Compose
در صورت نیاز به استفاده از Docker Compose، ممکن است لازم باشد آن را بهصورت جداگانه نصب کنید. Docker Compose ابزاری است که برای تعریف و اجرای چند Container Docker با استفاده از فایل YAML مورد استفاده قرار میگیرد.
- بکاپگیری و پشتیبانی
توجه داشته باشید که حتما از تنظیمات و دادههای مهم Docker برای جلوگیری از از دست رفتن دادهها در صورت بروز مشکلات، بکاپگیری کنید.
راهکارهای افزایش امنیت در Docker
کانتینرهای Docker معمولا حاوی برنامهها و دادههای مهم و حساسی هستند. اگر از امنیت آنها محافظت نشود، ممکن است بر اثر حملات امنیتی آسیب ببینند و از آنها سوءاستفاده شود. در همین راستا، راهکارهای ارزشمندی برای حفظ امنیت Docker ارائه شده که در اینجا به معرفی تعدادی از محبوبترین آنها میپردازیم:
- استفاده از Image های معتبر و تایید شده
- حذف صلاحیتهای غیرضروری کانتینر، مانند صلاحیتهای مربوط به شبکه، فرایندها و سیستم فایل
- محدود کردن دسترسی کانتینر به منابع میزبان
- استفاده از ابزارهای امنیتی مانند SELinux و AppArmor
- تعیین رمز برای حجمهای ذخیرهسازی اطلاعات حساس
- مدیریت دقیق دسترسیها و مجوزها
- استفاده از تنظیمات امنیت شبکه در Docker
۱۰ ترفند کاربردی برای کار با Docker
۱۰ ترفند مفید و کاربردی وجود دارد که به ما کمک میکند تا بتوانیم به بهترین شکل با Docker کار کنیم:
- استفاده از حجم (Volume) برای ذخیرهسازی دادههای پایدار در خارج از کانتینر
- مشاهده لاگهای کانتینر بدون ورود به آن با دستور «docker logs»
- تغییر پورتهای خارجی کانتینرها بهجای پورتهای داخلی
- اتصال به یک کانتینر اجرا شده با دستور docker exec
- استفاده از Dockerfile برای قابلیت تولید مجدد Build
- بازنشانی (Reset) تغییرات کانتینر به وضعیت اولیه
- نامگذاری کانتینرها برای شناسایی راحتتر آنها
- محدود کردن منابع مصرفی کانتینرها (CPU و RAM)
- استفاده از Docker Compose برای چند کانتینر
- استفاده از داکر در حالت Headless برای سرورها
با نصب Docker در لینوکس، بهرهوری سیستمعامل خود را افزایش دهید!
در این مقاله، شما با گامهای کلیدی نصب و استفاده از Docker در سیستمهای عامل مبتنی بر لینوکس آشنا شدید. از نصب اولیه و پیکربندی Docker گرفته تا اجرای Containers ها و مدیریت Images ها، هر بخشی از این آموزش به شما در فهم بهتر و عمیقتر این فناوری کمک کرده است. امیدواریم این راهنمای کاربردی نه تنها بهعنوان یک منبع آموزشی بلکه بهعنوان یک ابزار مفید در پروژههای آتی شما با Docker عمل کند.
همچنین، توصیه میکنیم همیشه بهدنبال بهروزرسانی دانش و مهارتهای خود در زمینه تکنولوژیهای مرتبط با Docker و لینوکس باشید تا در مسیر توسعه فناوریهای کانتینری همواره پیشرو باشید.