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… یه جورایی زور بی رحم 😅
روشی که من اتخاذ کرده ام به شرح زیر است:
- یک پروژه Cargo ایجاد کنید و نام آن را “timedatectl” بگذارید.
-
مقداری کد Rust بنویسید که فقط منطقه زمانی من را چاپ کند. (هر ورودی اجرا را نادیده می گیرد.)
fn main() { println!("Asia/Tokyo"); }
-
بسازش
$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
امیدواریم یکی از راه حل هایی که ارائه کرده ایم به شما کمک کند کار با ظروف و غلاف های پودمان را راحت کنید.