پشتیبانی Podman netlab Yak-Shaving « وبلاگ ipSpace.net

مدتها پیش، در یک روابط عمومی فراموششده برای اضافه کردن پشتیبانی از زمان اجرا Cumulus VX Ignite، اظهارنظری غیرمجاز بیان شد که میگفت:و در اینجا نحوه استفاده از netlab با Podman آورده شده است“. این اظهارنظر برای سالها بیصدا در اسناد باقی ماند تا اینکه شخصی (A) سعی کرد از Podman استفاده کند و (B) زمان کافی برای گزارش عدم کارایی آن پیدا کرد. netlab.
من نمی دانم این به ما چه می گوید: یا تعداد کمی از افراد از Podman استفاده می کنند، یا هیچ کس (به استثنای یک استثنای قابل توجه) به اندازه کافی اهمیت نمی دهد که چند دقیقه به ما بگوید که چیزها کار نمی کنند..
به هر حال، بر اساس تحقیقات فوقالعاده Joey Buiteweg، من توانستم یک راهحل کارساز را خیلی سریع جمعآوری کنم، اما این کار شامل تراشیدن گاومیش زیاد بود (جزئیات بیشتر گاو).
اصل netlab پیاده سازی سعی کرد کارها را به روش آسان انجام دهد (که به ندرت کار می کند) – زمانی که پیش فرض باشد جغجغه کردن زمان اجرا تنظیم شده است فریب، اضافه کنید فریب زمان اجرا به همه گره ها این ممکن است در زمانی که اظهارنظر مستقیم گفته شد کارساز بوده باشد; اخیر آزمایشگاه کانتینری نسخهها سوکت Docker را بررسی میکنند (و بنابراین زمانی که Docker نصب نشده باشد، به شدت خراب میشود) مگر اینکه شما استفاده می کنید -r آرگومان CLI (که به خوبی با چگونگی مطابقت ندارد netlab سیستم ارکستراسیون اصلی را شروع می کند) یا زمان اجرا را مشخص کنید CLAB_RUNTIME متغیر محیطی
متغیر محیطی راه حل عالی به نظر می رسید و روی سرور آزمایشی من به خوبی کار می کرد. افسوس که بر روی نسخه های جدیدتر اوبونتو کار نکرد. تحقیقات بیشتر توسط @joebb97 و @jbemmel مقصر را فاش کرد: کسی متوجه شد که تصادف بسیار سرگرم کننده است sudo. اوه خدای من، خیلی ممنون بچه ها. که واقعا قابل تقدیر بود.
برگشت به تابلوی طراحی خوشبختانه نسخه های جدید آزمایشگاه کانتینری از اجرای بدون sudoless پشتیبانی می کند، اما نیاز به حضور کاربر دارد clab_admins گروه حذف sudo از یک آزمایشگاه کانتینری راه اندازی کنید دستورات آسان بود، و امیدواریم چند نکته در مستندات کافی باشد.
با برداشتن این مانع می توانیم از آن عبور کنیم CLAB_RUNTIME متغیر به آزمایشگاه کانتینریو با خوشحالی از زمان اجرا Podman استفاده خواهد کرد (و شکایت در مورد سوکت Docker گم شده را متوقف خواهد کرد). اضافه کردن یک اسکریپت برای نصب Podman (می توانید انجام دهید Netlab نصب پادمن now) زمانی که فهمیدم چگونه سرویسی را که API مبتنی بر سوکت را در معرض نمایش میگذارد، راهاندازی کنم، بسیار سخت بود.
بعدی: زیاد بارانداز دستورات وارد می شود netlab کد منبع. خوشبختانه، Podman یک CLI شبیه Docker ارائه میکند که بیشتر موارد را پیادهسازی میکند بارانداز دستوراتی که استفاده می کنیم از آن گلوله طفره رفت 🎉.
با این حال، Podman نظر متفاوتی در مورد اینکه چه کسی می تواند یک کانتینر در حال اجرا را ببیند نسبت به Docker دارد. بهطور پیشفرض، تنها کاربری که کانتینر را راهاندازی کرده است، میتواند آن را ببیند و به دلیل آزمایشگاه کانتینری برای ایجاد جفت های vEth بین آنها نیاز به اجرای کانتینرها به عنوان root دارد، یک کاربر عادی نمی تواند آنها را ببیند. نتیجه نهایی: شما می توانید آزمایشگاه را اجرا کنید اما نمی توانید به دستگاه های آزمایشگاه متصل شوید. ما در حال حاضر این ناراحتی را نادیده گرفته ایم و مستند کرده ایم که شما باید آزمایشگاه های مبتنی بر Podman را به عنوان روت اجرا کنید 🤷🏻♂️ (تبدیل یک اشکال مود).
این باید باشد، درست است؟ من اینطور فکر کردم و این ویژگی در نسخه 26.08 ارائه شد. همانطور که اغلب اتفاق می افتد، جزئیات کثیف زمانی که کد با واقعیت روبرو شد ظاهر شد:
- Podman یک CLI شبیه Docker ارائه میکند، اما خروجیهای JSON آن دقیقاً با دستورات Docker مطابقت ندارند (خدایا، این واقعاً مفید است).
- Docker یک سرور DNS داخلی دارد که ما هنگام ایجاد کانتینر از آن استفاده کردیم
/etc/resolv.confفایل ها Podman هنگام ایجاد این فایلها از حلکننده DNS میزبان استفاده میکند، و تنظیمات Docker-مانندی که برای استقرار کلاینتهای DNS در کانتینرهای مبتنی بر لینوکس استفاده میکردیم، با Podman کار نمیکرد. این نیز رفع شده است.
این اصلاحات در نسخه بعدی ارائه می شوند netlab انتشار (برنامه ریزی شده برای اوایل سپتامبر 2026) یا می توانید نصب کنید توسعه نسخه




