Podman 4.3 در آرتیکس لینوکس: نصب کنید
خلاصه
Podman موتوری برای مجازی سازی برای ایجاد و نگهداری کانتینر در ماشین های مجازی است. این توسط Red Hat توسعه یافته و به عنوان یک نرم افزار متن باز (OSS) تحت مجوز Apache v2.0 منتشر شده است. کد منبع به زبان Golang نوشته شده است.
همانطور که قبلاً نوشتم، این کراس پلتفرم است و همچنین برای سازگاری بسیار با Docker توسعه یافته است.
این پست نحوه نصب Podman را بر روی لینوکس آرتیکس بر اساس آرچ لینوکس و بدون سیستم نشان می دهد.
محیط
آموزش
* doas
(OpenDoas) را می توان با sudo
.
از طریق Pacman نصب کنید
به لطف سیستم مدیریت بسته خود، Pacman Podman را با یک خط فرمان ساده تحویل می دهد.
$ doas pacman install podman
برای درخواست از شما به صورت زیر چاپ شده است. من پیش فرض را انتخاب کردم:
doas pacman -Sy podman
:: Synchronizing package databases...
(...)
resolving dependencies...
:: There are 3 providers available for container-network-stack:
:: Repository galaxy
1) cni-plugins
:: Repository community
2) cni-plugins 3) netavark
Enter a number (default=1):
سپس به دنبال آن:
looking for conflicting packages...
Packages (14) catatonit-0.1.7-2 cni-plugins-1.2.0-2 conmon-1:2.1.5-1 containers-common-1:0.50.1-2
criu-3.17.1-1 crun-1.7.2-1 libslirp-4.7.0-1 nftables-1:1.0.6-1 protobuf-c-1.4.1-1
python-protobuf-21.12-1 python-six-1.16.0-6 slirp4netns-1.2.0-1 yajl-2.1.0-5
podman-4.3.1-2
Total Download Size: 30.62 MiB
Total Installed Size: 177.23 MiB
:: Proceed with installation? [Y/n] y
نصب شروع شد و خروجی این بود:
:: Retrieving packages...
podman-4.3.1-2-x86_64 16.2 MiB 2.51 MiB/s 00:06 [#################################] 100%
(...)
Total (14/14) 30.6 MiB 1457 KiB/s 00:22 [#################################] 100%
(14/14) checking keys in keyring [#################################] 100%
(...)
(14/14) checking available disk space [#################################] 100%
:: Processing package changes...
( 1/14) installing catatonit [#################################] 100%
(...)
(14/14) installing podman [#################################] 100%
Optional dependencies for podman
apparmor: for AppArmor support
btrfs-progs: support btrfs backend devices [installed]
cni-plugins: for an alternative container-network-stack implementation [installed]
podman-compose: for docker-compose compatibility
podman-docker: for Docker-compatible CLI
:: Running post-transaction hooks...
(1/1) Creating temporary files...
پارامترهای کرنل را تأیید کنید
kernel.unprivileged_userns_clone
باید فعال شود.
بررسی unprivileged_userns_clone
به جای 0 روی 1 تنظیم شده است:
sysctl kernel.unprivileged_userns_clone
خروجی این بود:
kernel.unprivileged_userns_clone = 1
خوب.
QEMU را نصب کنید
برای مدیریت ماشینهای مجازی Podman، QEMU، یک “مشکلساز و مجازیساز ماشین متنباز و عمومی” مورد نیاز است.
از طریق Pacman نیز در دسترس است. بیایید آن را نصب کنیم:
$ doas pacman -Sy qemu-base
برای درخواست از شما به صورت زیر چاپ شده است. انتخاب پیش فرض اشکالی ندارد:
:: Synchronizing package databases...
(...)
:: There are 2 providers available for libwolfssl.so=35-64:
:: Repository world
1) wolfssl
:: Repository extra
2) wolfssl
Enter a number (default=1):
خروجی این بود:
looking for conflicting packages...
Packages (44) capstone-4.0.2-6 dtc-1.6.1-4 edk2-ovmf-202211-3 libcacard-2.7.0-2.1 libnfs-5.0.2-1
liburing-2.3-1 multipath-tools-0.9.4-1 numactl-2.0.16-1 qemu-audio-spice-7.2.0-3
qemu-block-curl-7.2.0-3 qemu-block-dmg-7.2.0-3 qemu-block-nfs-7.2.0-3
qemu-block-ssh-7.2.0-3 qemu-chardev-spice-7.2.0-3 qemu-common-7.2.0-3
qemu-hw-display-qxl-7.2.0-3 qemu-hw-display-virtio-gpu-7.2.0-3
qemu-hw-display-virtio-gpu-gl-7.2.0-3 qemu-hw-display-virtio-gpu-pci-7.2.0-3
qemu-hw-display-virtio-gpu-pci-gl-7.2.0-3 qemu-hw-display-virtio-vga-7.2.0-3
qemu-hw-display-virtio-vga-gl-7.2.0-3 qemu-hw-s390x-virtio-gpu-ccw-7.2.0-3
qemu-hw-usb-host-7.2.0-3 qemu-hw-usb-redirect-7.2.0-3 qemu-hw-usb-smartcard-7.2.0-3
qemu-img-7.2.0-3 qemu-pr-helper-7.2.0-3 qemu-system-x86-7.2.0-3
qemu-system-x86-firmware-7.2.0-3 qemu-tools-7.2.0-3 qemu-ui-curses-7.2.0-3
qemu-ui-opengl-7.2.0-3 qemu-ui-spice-app-7.2.0-3 qemu-ui-spice-core-7.2.0-3
qemu-virtiofsd-7.2.0-3 seabios-1.16.1-1 snappy-1.1.9-2 spice-0.15.1-1
usbredir-0.13.0-1 vde2-2.3.3-3 virglrenderer-0.10.4-1 wolfssl-5.5.4-1
qemu-base-7.2.0-3
Total Download Size: 30.00 MiB
Total Installed Size: 138.25 MiB
:: Proceed with installation? [Y/n] y
:: Retrieving packages...
edk2-ovmf-202211-3-any 15.2 MiB 2.11 MiB/s 00:07 [#################################] 100%
(...)
Total (44/44) 30.0 MiB 528 KiB/s 00:58 [#################################] 100%
(44/44) checking keys in keyring [#################################] 100%
(...)
(44/44) checking available disk space [#################################] 100%
:: Processing package changes...
( 1/44) installing numactl [#################################] 100%
(...)
(44/44) installing qemu-base [#################################] 100%
Optional dependencies for qemu-base
qemu-audio-alsa: for ALSA audio driver
(...)
qemu-virtiofsd: for virtio-fs shared filesystem daemon [installed]
samba: for SMB/CIFS server support
:: Running post-transaction hooks...
(1/5) Creating system user accounts...
Creating group 'qemu' with GID 973.
Creating user 'qemu' (QEMU user) with UID 973 and GID 973.
(2/5) Creating temporary files...
(3/5) Reloading device manager configuration...
(4/5) Updating icon theme caches...
(5/5) Updating the desktop file MIME type cache...
عیب یابی
نصب پایه QEMU در بالا احتمالاً از خطای زیر جلوگیری می کند:
$ podman machine init
Error: exec: "qemu-system-x86_64": executable file not found in $PATH
Podman را پیکربندی کنید
Container.conf
Artix بدون سیستم است. پس باید به کانتینرهای پودمان بگوییم. conf را برای نوشتن مانند زیر ویرایش کنید [engine]
بخش:
#cgroup_manager = "systemd"
+ cgroup_manager = "cgroupfs"
uid / gid
از آنجایی که Podman به طور پیش فرض در حالت بدون ریشه کار می کند، باید کاربر / گروه را برای آن آماده کنید.
/etc/subuid
و /etc/subgid
فایل های پیکربندی هستند تعریف کاربری لاگین خود را به آنها اضافه کنید مانند:
+ {your-user}:100000:65536
مهاجرت سیستم پودمان
اجرا کن:
$ podman system migrate
خروجی این بود:
WARN[0000] "https://dev.to/" is not a shared mount, this could cause issues or missing mounts with rootless containers
این اخطار به دلیل عدم وجود buildah
از کانتینرها با نصب قبلی قابل رفع است.
راه اندازی ماشین مجازی
اکنون پادمن آماده است تا اولین ماشین مجازی شما را ایجاد کند!! اجرا کن:
$ podman machine init
خروجی این بود:
Downloading VM image: fedora-coreos-37.20230110.2.0-qemu.x86_64.qcow2.xz: done
Extracting compressed file
Image resized.
Error: exec: "timedatectl": executable file not found in $PATH
خطای بالا به دلیل نداشتن OpenRC بود timedatectl
از systemd برای سفارشی کردن منطقه زمانی 😅
وضعیت فعلی جهان چگونه است؟
ماشین مجازی ایجاد شد اما فایل احتراق آن به دلیل خطای بالا نبود.
کشنده است، نه همیشه بلکه گاهی. بهتره درستش کنی در پست دیگری نحوه انجام آن را نشان خواهم داد.
مدیریت تصاویر کانتینر
اکنون می توانید تصاویر کانتینر را از سرویس های میزبانی بیرون بکشید. به عنوان مثال، بیایید آلپاین لینوکس، یکی از محبوب ترین ها، را از Docher Hub دریافت کنیم:
$ podman pull docker.io/alpine
فهمیدی 😉؟ در مورد من، خروجی این بود:
Trying to pull docker.io/library/alpine:latest...
Getting image source signatures
Copying blob (...)
Copying config (...)
Writing manifest to image destination
Storing signatures
(...)
می تواند آن را کمی راحت تر کند
علاوه بر این، اگر می خواهید حذف کنید docker.io/
، ویرایش کنید registries.conf
:
$ # make a backup
$ doas cp -p /etc/containers/registries.conf /etc/containers/registries.conf.org
$ # edit
$ doas nvim /etc/containers/registries.conf
برای اضافه کردن خطوط به پایین:
+ [registries.search]
+ registries = ['docker.io']
وب سرور را برای آزمایش اجرا کنید
ما آماده هستیم، اگرچه برخی از آنها وجود دارد که بهتر است آنها را برطرف کنیم. بیایید یک ظرف راه اندازی کنیم و لذت ببریم.
سرور httpd Apache را در Alpine دریافت کنید:
$ podman pull docker.io/httpd:alpine
سپس آن را اجرا کنید:
$ podman run -p 8080:80 httpd:alpine
دسترسی به http://127.0.0.1:8080
با مرورگر شما
خواهی دید…😄
نتیجه
Podman با ذهن امنیت و ثبات توسعه یافته است. اول اینکه Podman فاقد دیمون است. کانتینرهای موجود در ماشین مجازی از آن سود می برند، زیرا اغلب تحت تأثیر دیگری قرار نمی گیرند. علاوه بر این، آنها به طور پیش فرض بدون ریشه هستند، که اجرای آنها را ایمن تر می کند.
امیدواریم که Podman محیطهایی را به ارمغان بیاورد که تا حد امکان قابل استفاده مجدد و ایزوله باشند و بهرهوری یا عملیات پیشرفتهتری داشته باشید.