آموزش سرور

نصب Portainer برای مدیریت داکر با رابط وب

تهیه: کلودیفای (نگارش با کمک هوش مصنوعی) · انتشار: · زمان مطالعه: ۷ دقیقه

root@server: ~$ docker volume create portainer_dataportainer_data$ docker run -d --name portainer --resta$ -v /var/run/docker.sock:/var/run/doc$ portainer/portainer-ce:lts$ docker ps --filter name=portainerPortainerآموزش سرورنصب Portainer برایمدیریت داکر با رابط وبمجلهٔ کلودیفایclodify.net/blog
پاسخ کوتاه

Portainer یک پنل وب سبک برای مدیریت داکر است که خودش به‌صورت یک کانتینر اجرا می‌شود. برای نصب، ابتدا داکر را نصب کنید، یک volume برای داده‌های Portainer بسازید و کانتینر portainer/portainer-ce را با اتصال به سوکت داکر اجرا کنید. سپس در اولین ورود رمز قوی برای کاربر admin تعیین کنید و دسترسی به پورت پنل را با فایروال یا تونل SSH محدود کنید، چون هر کسی که به Portainer دسترسی داشته باشد عملاً کنترل کامل سرور را دارد.

Portainer چیست و چه زمانی به کارتان می‌آید؟

داکر ابزاری قدرتمند است، اما مدیریت آن فقط با خط فرمان برای همه راحت نیست. وقتی تعداد کانتینرها زیاد می‌شود، پیدا کردن کانتینری که ری‌استارت شده، دیدن لاگ‌ها، بررسی مصرف منابع یا به‌روزرسانی یک استک، با دستورهای متعدد وقت‌گیر می‌شود. Portainer یک رابط وب گرافیکی است که همین کارها را با چند کلیک ممکن می‌کند.

Portainer برای این افراد به‌ویژه مفید است: تیم‌هایی که همهٔ اعضایشان با خط فرمان راحت نیستند، توسعه‌دهندگانی که چند پروژه را روی یک سرور اجرا می‌کنند و کسانی که می‌خواهند یک نمای کلی سریع از وضعیت کانتینرها داشته باشند. البته Portainer جایگزین فهم داکر نیست. اگر هنوز با مفاهیم پایه آشنا نیستید، ابتدا داکر چیست و دستورهای پایهٔ داکر را بخوانید.

معماری Portainer روی سرور
پورت محلی127.0.0.1docker.sockمرورگر شماhttps://localhost:9443تونل SSHاتصال رمزنگاری‌شدهPortainerکانتینر مدیریتسوکت داکرکنترل کانتینرهاپورت محلی127.0.0.1docker.sockمرورگر شماhttps://localhost:9443تونل SSHاتصال رمزنگاری‌شدهPortainerکانتینر مدیریتسوکت داکرکنترل کانتینرها
شکل ۱ پنل فقط از درون تونل یا reverse proxy امن در دسترس است.

پیش‌نیازها

برای نصب Portainer به یک سرور مجازی لینوکسی با دسترسی root یا کاربر sudo نیاز دارید. اوبونتو ۲۴.۰۴ یا ۲۲.۰۴ گزینه‌های مناسبی‌اند. Portainer خودش سبک است و روی سروری با یک گیگابایت رم هم اجرا می‌شود، اما منابع لازم را باید بر اساس کانتینرهایی که قرار است مدیریت کنید تخمین بزنید.

داکر باید از قبل نصب باشد. روش نصب کامل داکر، از جمله تنظیم مخزن رسمی، در مقالهٔ نصب داکر روی اوبونتو ۲۴.۰۴ آمده است. اگر سرورتان در ایران است و هنگام نصب یا دریافت ایمیج با خطای ۴۰۳ مواجه شدید، راه‌حل‌ها در مقالهٔ خطای ۴۰۳ داکر توضیح داده شده است. پس از نصب، با دستور docker version مطمئن شوید که سرویس داکر در حال اجراست.

نصب Portainer CE گام‌به‌گام

نسخهٔ رایگان و متن‌باز Portainer با نام Community Edition یا CE شناخته می‌شود. نصب آن دو مرحله دارد: ساخت یک volume برای نگهداری داده‌ها و اجرای کانتینر. Volume باعث می‌شود تنظیمات، کاربران و اتصال‌های Portainer با حذف و ساخت دوبارهٔ کانتینر از بین نرود.

دستورهای زیر را روی سرور اجرا کنید:

docker volume create portainer_data
docker run -d --name portainer --restart=always \
  -p 127.0.0.1:9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:lts

به بخش 127.0.0.1:9443 دقت کنید. با این تنظیم، پورت پنل فقط روی رابط محلی سرور باز می‌شود و مستقیماً از اینترنت در دسترس نیست. این کار عمداً برای امنیت انجام شده است و در ادامه روش دسترسی امن را توضیح می‌دهیم. گزینهٔ restart=always هم باعث می‌شود Portainer بعد از ری‌استارت سرور خودکار بالا بیاید.

نصب Portainer CE
root@server: ~
$ docker volume create portainer_dataportainer_data$ docker run -d --name portainer --restart=always -p 127.0.0.1:9443:9443 \$   -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data \$   portainer/portainer-ce:lts$ docker ps --filter name=portainerportainer   Up 10 seconds   127.0.0.1:9443->9443/tcp$ 
شکل ۲ Volume داده‌ها را پس از به‌روزرسانی حفظ می‌کند.

دسترسی امن به پنل

سوکت داکر که به Portainer متصل کرده‌ایم، در عمل دسترسی کامل به سرور می‌دهد. هر کسی که وارد Portainer شود می‌تواند کانتینری با دسترسی کامل به فایل‌سیستم میزبان بسازد. پس باز گذاشتن پورت پنل روی اینترنت، حتی با رمز قوی، ریسک غیرضروری است. سه روش امن‌تر وجود دارد.

روش اول، تونل SSH است که ساده‌ترین و امن‌ترین راه برای استفادهٔ شخصی است. روی کامپیوتر خودتان این دستور را اجرا کنید:

ssh -L 9443:127.0.0.1:9443 user@SERVER_IP

سپس در مرورگر نشانی https://localhost:9443 را باز کنید. ترافیک از درون اتصال رمزنگاری‌شدهٔ SSH عبور می‌کند. اگر با SSH آشنا نیستید، راهنمای اتصال SSH را ببینید.

روش دوم، قرار دادن Portainer پشت Nginx با دامنه و گواهی SSL معتبر است. در این حالت می‌توانید دسترسی را به IPهای مشخص محدود کنید یا یک لایهٔ احراز هویت اضافه بگذارید. روش کلی راه‌اندازی reverse proxy برای کانتینرها در مقالهٔ Nginx به‌عنوان reverse proxy برای داکر آمده است.

روش سوم، اگر ناچارید پورت را عمومی باز کنید، فقط IP ثابت خودتان را در فایروال مجاز کنید. با UFW این کار یک خط است؛ جزئیات در آموزش فایروال UFW آمده است. توجه کنید که داکر قوانین iptables خودش را می‌سازد و پورت‌هایی که با -p روی همهٔ رابط‌ها منتشر می‌شوند ممکن است قوانین UFW را دور بزنند؛ به همین دلیل اتصال به 127.0.0.1 امن‌ترین پیش‌فرض است.

اولین ورود و تنظیمات اولیه

در اولین باز کردن پنل، Portainer از شما می‌خواهد یک کاربر مدیر بسازید. یک رمز طولانی و تصادفی انتخاب کنید. اگر این صفحه را چند دقیقه بدون تکمیل رها کنید، Portainer برای امنیت متوقف می‌شود و باید کانتینر را ری‌استارت کنید.

پس از ورود، محیط محلی (local) را انتخاب کنید. حالا داشبورد تعداد کانتینرها، ایمیج‌ها، volumeها و شبکه‌ها را نشان می‌دهد. از منوی Containers می‌توانید وضعیت هر کانتینر را ببینید، لاگ‌ها را بخوانید، آمار مصرف CPU و رم را مشاهده کنید و حتی از داخل مرورگر به ترمینال کانتینر وارد شوید.

کار با Stackها به‌جای کانتینرهای تکی

قدرت اصلی Portainer در بخش Stacks است. Stack در واقع همان فایل docker compose است که از طریق رابط وب مدیریت می‌شود. می‌توانید محتوای فایل compose را مستقیم در ویرایشگر وب بچسبانید، آن را از یک مخزن گیت بخوانید یا فایل را آپلود کنید. هنگام به‌روزرسانی، کافی است فایل را ویرایش کنید و دکمهٔ Update را بزنید تا Portainer تغییرات را اعمال کند.

اگر با فرمت فایل compose آشنا نیستید، راهنمای داکر کامپوز ساختار سرویس‌ها، شبکه‌ها و volumeها را با مثال توضیح می‌دهد. یک توصیهٔ عملی: فایل‌های compose را حتماً در گیت هم نگه دارید. Portainer مکان خوبی برای اجرا است، اما منبع اصلی پیکربندی بهتر است در کنترل نسخه باشد.

مدیریت با خط فرمان یا Portainer
خط فرمان
  • کنترل کامل و قابل اسکریپت
  • مناسب اتوماسیون
  • نیازمند تسلط به دستورها
در برابر
Portainer
  • نمای کلی سریع
  • لاگ و آمار با یک کلیک
  • مناسب تیم‌های ترکیبی
  • نیازمند ایمن‌سازی دسترسی
شکل ۳ بهترین روش، استفادهٔ هم‌زمان است: compose در گیت و Portainer برای مشاهده و مدیریت روزمره.

به‌روزرسانی، بکاپ و نکات نگهداری

برای به‌روزرسانی Portainer، کانتینر فعلی را متوقف و حذف کنید، ایمیج جدید را بگیرید و همان دستور اجرا را دوباره بزنید. چون داده‌ها در volume با نام portainer_data هستند، تنظیمات حفظ می‌شود:

docker stop portainer && docker rm portainer
docker pull portainer/portainer-ce:lts

سپس دستور docker run بخش نصب را دوباره اجرا کنید. برای بکاپ، از محتوای volume یک آرشیو بگیرید و آن را بیرون از سرور نگه دارید. همچنین فراموش نکنید که Portainer جایگزین مانیتورینگ نیست. برای هشدار در زمان قطعی، ابزاری مثل Uptime Kuma را کنار آن اجرا کنید.

اشتباهات رایج

رایج‌ترین اشتباه، باز گذاشتن پورت 9000 یا 9443 روی اینترنت بدون محدودیت است. اشتباه دوم، اجرای Portainer بدون volume است که با اولین به‌روزرسانی همهٔ تنظیمات را پاک می‌کند. سومین اشتباه، ساختن کانتینرها فقط از رابط وب بدون نگه داشتن فایل compose است؛ در این حالت بازسازی سرور جدید بسیار دشوار می‌شود. اگر این سه نکته را رعایت کنید، Portainer ابزاری امن و راحت برای مدیریت روزمرهٔ داکر روی سرور مجازی شما خواهد بود.

مدیریت چند سرور با یک پنل

اگر بیش از یک سرور داکر دارید، لازم نیست روی هر کدام Portainer جداگانه نصب کنید. Portainer می‌تواند با نصب یک کانتینر سبک به نام Agent روی سرورهای دیگر، همهٔ آن‌ها را از یک پنل مرکزی مدیریت کند. در این حالت هر سرور به‌صورت یک Environment جداگانه در فهرست دیده می‌شود و می‌توانید بین آن‌ها جابه‌جا شوید. برای امنیت، ارتباط بین پنل مرکزی و Agentها را فقط روی شبکهٔ خصوصی یا با محدودیت IP در فایروال برقرار کنید، چون Agent هم همان سطح دسترسی به داکر را دارد.

برای تیم‌ها، بخش Users و Teams امکان تعریف دسترسی‌های جداگانه را می‌دهد. مثلاً می‌توانید به یک توسعه‌دهنده فقط اجازهٔ دیدن لاگ و ری‌استارت کانتینرهای یک پروژه را بدهید، بدون این‌که بتواند کانتینر جدید بسازد یا volumeها را حذف کند. در نسخهٔ CE این کنترل‌ها ساده‌ترند، اما برای تیم‌های کوچک کافی‌اند. هر عضو تیم باید حساب جداگانه داشته باشد تا اگر کسی از تیم جدا شد، فقط حساب او غیرفعال شود و نیاز به تغییر رمز مشترک نباشد.

سؤالات متداول

Portainer رایگان است؟

بله، نسخهٔ Community Edition رایگان و متن‌باز است و برای مدیریت یک یا چند سرور داکر کافی است. نسخهٔ Business امکانات سازمانی بیشتری دارد.

چرا پورت را فقط روی 127.0.0.1 باز کردیم؟

چون دسترسی به Portainer یعنی کنترل کامل داکر و عملاً کل سرور. با اتصال محلی، فقط از طریق تونل SSH یا reverse proxy امن می‌توانید وارد شوید.

اگر رمز admin را فراموش کنم چه کنم؟

ساده‌ترین راه، توقف کانتینر و استفاده از ابزار رسمی بازنشانی رمز Portainer روی volume داده است. پیش از هر کاری از volume بکاپ بگیرید.

Portainer منابع زیادی مصرف می‌کند؟

خیر. Portainer معمولاً مقدار کمی رم و CPU مصرف می‌کند و روی سرورهای کوچک هم بدون مشکل اجرا می‌شود.

آماده‌اید؟ سرورتان را بسازید.

از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی

سرورتان را همین حالا بسازید.

ساعتی بپردازید. هر وقت خواستید حذف کنید.