راهنمای سریع استفاده از کانتینرهای systemd-nspawn — A whirlwind tour of systemd-nspawn containers
خلاصه
ابزار systemd-nspawn یک فناوری کانتینرسازی سبک مبتنی بر نامفضای لینوکس است که برخلاف Docker با فایلهای سیستم ریشه قابل نوشتن کار میکند. این مقاله نحوه راهاندازی و استفاده از آن را برای توزیعهای مختلف لینوکس بررسی میکند.
ابزار systemd-nspawn یک فناوری کانتینرسازی سبک مبتنی بر نامفضای لینوکس (Linux Namespaces) است که شباهت زیادی به Docker دارد، اما رویکرد متفاوتی در مدیریت ایمیجها دارد. برخلاف Docker که از ایمیجهای آماده و Dockerfile استفاده میکند، systemd-nspawn معمولاً با یک فایلسیستم ریشه (rootfs) قابل نوشتن کار میکند و بیشتر شبیه به یک ماشین مجازی سبک عمل میکند. کاربران قدیمی لینوکس ممکن است آن را نسخهای پیشرفتهتر از دستور سنتی chroot بدانند.
چرا systemd-nspawn؟
این ابزار در سناریوهای زیر بسیار کاربردی است:
- اجرای نرمافزارها با سطحی از ایزولاسیون روی VPSهایی که امکان ایجاد ماشین مجازی کامل به دلیل محدودیتهای مجازیسازی تو در تو وجود ندارد.
- اشتراکگذاری دسترسی به سختافزار مانند پردازندههای گرافیکی (GPU)، که دلیل اصلی استفاده نویسنده برای اجرای مدلهای زبانی بزرگ (LLM) است.
- حذف سربارِ سنگین مجازیسازی.
- دسترسی مستقیم به فایلهای سیستم میزبان بدون نیاز به راهحلهایی مثل
virtiofs.
ساخت کانتینرها با روشهای سنتی
از آنجایی که systemd-nspawn مدیر ایمیج اختصاصی برای ساخت ندارد، باید از ابزارهای سنتی سیستمعامل برای ساخت chroot استفاده کرد. به طور معمول، این فایلسیستمها در مسیر /var/lib/machines/ ذخیره میشوند.
- خانواده دبیان: با استفاده از ابزار
debootstrapمیتوان یک ریشه سیستمعامل دبیان یا اوبونتو را ساخت. به عنوان مثال:sudo debootstrap --include=systemd,dbus,locales bookworm /var/lib/machines/debian - مشتقات RHEL: با استفاده از
dnfو ابزارهای مشابه میتوان توزیعهایی مانند فدوا را درون پوشه مورد نظر نصب کرد. - آلپاین لینوکس: نویسنده مقاله به دلیل مشکلات ابزارهای موجود مانند
alpine-chroot-installکه ممکن است به صورت ناخواسته پوشههای میزبان را مانت (Mount) کنند، اسکریپت اختصاصی و امنتری به نامalpine-nspawn-installرا توسعه داده است که ساخت کانتینرهای Alpine را بسیار ایمنتر میکند.
در مقایسه حجم، کانتینر Alpine با اختلاف زیادی سبکتر از دبیان و فدوا است و حجم بسیار کمی دارد.
بوت اولیه و مدیریت کانتینر
پس از نصب پکیج systemd-container روی میزبان، میتوان با دستور زیر وارد کانتینر شد و یک شل ریشه دریافت کرد:
sudo systemd-nspawn -D /var/lib/machines/debian -M debian --private-users=pick --private-users-ownership=chown
آرگومان --private-users=pick به صورت خودکار یک بازه از UID و GIDهای ایزوله را برای امنیت بیشتر اختصاص میدهد.
نگاه برنامهنویسان در هکرنیوز
در بحثهای هکرنیوز، برخی برنامهنویسان از پیچیدگیهای قوانین iptables در داکر گلایه کردهاند و ابزارهایی مثل systemd-nspawn را به عنوان جایگزینی سادهتر و نزدیکتر به سیستمعامل پایه برای مدیریت کانتینرها ترجیح میدهند.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل