برنامه نویسی

Podman 4.3 در آرتیکس لینوکس: مشکل با راه اندازی اولیه برطرف شد

مقدمه

نصب Podman بر روی آرتیکس لینوکس، یک سیستم عامل مبتنی بر لینوکس Arch که از systemd استفاده نمی کند، چندان دشوار نیست.
زیرا Pacman بسته های اصلی را مدیریت می کند: podman و QEMU qemu-base منظورم همین است.

با نصب آنها و انجام برخی تنظیمات می توانید پادمن را آماده کنید. پس از انجام این کار، می توانید ماشین های مجازی را اجرا کنید و مدیریت کانتینرها را تا یک نقطه شروع کنید.

اما برخی مشکلات همچنان باقی است. و می تواند برای کنترل فرآیند و شبکه ها مشکل ایجاد کند.
این مقاله نحوه از بین بردن آنها را توضیح می دهد.

محیط

راه حل برای هر موضوع

* doas در عوض (OpenDoas). sudo نیز قابل استفاده است.

system migrate اما هشدار برای از دست رفته buildah

محتوای مسئله

buildah “ابزاری برای آسان کردن ساخت تصاویر OCI” است که توسط Containers ارائه شده است.
در صورت عدم نصب،podman system migrate اخطار زیر را چاپ خواهد کرد:

WARN[0000] "https://dev.to/" is not a shared mount, this could cause issues or missing mounts with rootless containers
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیشتر بعدی podman هشدارهای مشابهی ممکن است برای عملیات نیز خروجی باشد.

راه حل

بیایید buildah را نصب کنیم. Pacman زندگی را آسان تر می کند:

$ doas pacman -Sy buildah
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی و تعامل به شرح زیر بود:

:: Synchronizing package databases...
(...)
resolving dependencies...
looking for conflicting packages...

Packages (2) skopeo-1.11.0-1  buildah-1.28.2-1

Total Download Size:   15.06 MiB
Total Installed Size:  52.21 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages...
(...)
:: Processing package changes...
(...)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

podman system migrate از نو. هیچ خطا یا هشداری نباید وجود داشته باشد.

gvproxy شبکه به دلیل از دست رفتن محدود شده است

محتوای مسئله

وقتی ماشین مجازی را راه اندازی می کنم gvproxy یافت نشد، بنابراین خروجی “نمی توان شبکه میزبان را شروع کرد” بود.

$ podman machine start
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی این بود:

Starting machine "podman-machine-default"
Error: unable to start host networking: "could not find \"gvproxy\" in one of [/usr/local/libexec/podman /usr/local/lib/podman /usr/libexec/podman /usr/lib/podman].  To resolve this error, set the helper_binaries_dir key in the `[engine]` section of containers.conf to the directory containing your helper binaries."
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه حل

gvproxy در Github از Containers با نام gvisor-tap-vsock منتشر شده است.
آخرین نسخه (مال من 0.5.0 بود) را از نسخه ها دانلود کنید. یکی برای لینوکس است gvproxy-linux نام است.

در محیط محلی،gvproxy و نام آن را تغییر دهید. و آن را در جایی قرار دهید که Podman بتواند آن را به عنوان یک باینری کمکی در نظر بگیرد. دقیقاً کجاست؟پیشنهادات در پیام خطای بالا آورده شده است. تنظیمات مجوز نیز مورد نیاز است.

$ doas mv gvproxy-linux /usr/lib/podman/gvproxy

$ doas chown root:root /usr/lib/podman/gvproxy
$ doas chmod a+x /usr/lib/podman/gvproxy
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به هر حال، ممکن است بتوانید بسته را در مخزن pacman یا AUR نیز پیدا کنید.

timedatectl چون پیدا نمیشه .ign فایل راه اندازی vm ایجاد نمی شود

محتوای مسئله

پودمان ignition_linux.go داخله getLocalTimeZone دندان ها timedatectl اجرا کن این بخشی از systemd است.به آن دلیل podman machine init با خطای زیر ناموفق بود:

Extracting compressed file
Image resized.
Error: exec: "timedatectl": executable file not found in $PATH
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به آن دلیل .ign پیکربندی پیش‌فرض بوت دستگاه ایجاد نشد.

در نتیجه podman machine start با خطای زیر ناموفق بود:

Starting machine "podman-machine-default"
Waiting for VM ...
Error: qemu exited unexpectedly with exit code 1, stderr: qemu-system-x86_64: -fw_cfg name=opt/com.coreos/config,file=/home/(...)/.config/containers/podman/machine/qemu/podman-machine-default.ign: can't load /home/(...)/.config/containers/podman/machine/qemu/podman-machine-default.ign: Failed to open file “/home/(...)/.config/containers/podman/machine/qemu/podman-machine-default.ign”: No such file or directory
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه حل

فایل اجرایی timedatectl تو $PATH… یه جورایی زور بی رحم 😅

روشی که من اتخاذ کرده ام به شرح زیر است:

  1. یک پروژه Cargo ایجاد کنید و نام آن را “timedatectl” بگذارید.
  2. مقداری کد Rust بنویسید که فقط منطقه زمانی من را چاپ کند. (هر ورودی اجرا را نادیده می گیرد.)

    fn main() {
        println!("Asia/Tokyo");
    }
    
  3. بسازش $PATH قرار دادن.در حقیقت /usr/local/bin قرار داده شده در

در نتیجه

podman machine init باید مانند زیر موفق شود!!!

Extracting compressed file
Image resized.
Machine init complete
To start your machine run:

    podman machine start

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بعد podman machine start بریم بدویم در حالت بدون روت باید خوب بوت بشه 😊

Starting machine "podman-machine-default"
Waiting for VM ...
Mounting volume... /home/(...):/home/(...)

This machine is currently configured in rootless mode. If your containers
require root permissions (e.g. ports < 1024), or if you run into compatibility
issues with non-podman clients, you can switch using the following command: 

    podman machine set --rootful

API forwarding listening on: /home/(...)/.local/share/containers/podman/machine/podman-machine-default/podman.sock
You can connect Docker API clients by setting DOCKER_HOST using the
following command in your terminal session:

    export DOCKER_HOST='unix:///home/(...)/.local/share/containers/podman/machine/podman-machine-default/podman.sock'

Machine "podman-machine-default" started successfully
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

امیدواریم یکی از راه حل هایی که ارائه کرده ایم به شما کمک کند کار با ظروف و غلاف های پودمان را راحت کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا