Podman 4.3 در Artix Linux: Installation

مقدمه
Podman یک ابزار مدیریت کانتینر برای ساخت محیط های مجازی است. این توسط Red Hat توسعه یافته و به عنوان نرم افزار متن باز (OSS) تحت مجوز Apache v2.0 منتشر شده است. در زبان Go پیاده سازی شده است.
همانطور که قبلاً نوشتم، این پلتفرم سازگار است و با درجه بالایی از سازگاری با Docker توسعه یافته است.
این مقاله مراحل نصب Podman را در لینوکس آرتیکس نشان می دهد. این مبتنی بر آرچ لینوکس است و از systemd استفاده نمی کند.
محیط
آموزش
* 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
روی 1 تنظیم شده است. نباید 0 باشد:
sysctl kernel.unprivileged_userns_clone
خروجی این بود:
kernel.unprivileged_userns_clone = 1
خوب.
QEMU را نصب کنید
QEMU برای کار با ماشین مجازی Podman مورد نیاز است. این یک شبیه ساز و مجازی ساز ماشین عمومی منبع باز است.
همچنین در 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
containers.conf
Artix از systemd استفاده نمی کند. بنابراین باید به ظرف پودمان در مورد آن بگوییم. بیایید فایل پیکربندی را ویرایش کنیم:
$ # バックアップの作成
$ doas cp -p /etc/containers/containers.conf /etc/containers/containers.conf.org
$ # 編集
$ doas nvim /etc/containers/containers.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 دارای systemd است timedatectl
این به این دلیل است که چیزی به نام سفارشی کردن Timezone وجود ندارد. 😅
در مورد وضعیت فعلی چه احساسی دارید؟
ماشین مجازی ایجاد شد، اما فایل احتراق مورد استفاده آن به دلیل خطای بالا ایجاد نشد.
نه همیشه، اما گاهی اوقات کشنده. بهتره درستش کن قصد دارم در مقاله دیگری نحوه انجام این کار را بنویسم.
کار با تصاویر ظرف
اکنون می توانید تصاویر کانتینر را از سرویس میزبانی خود بیرون بکشید. بیایید Alpine Linux را از Docker 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
فقط ویرایش کنید:
$ # バックアップの作成
$ doas cp -p /etc/containers/registries.conf /etc/containers/registries.conf.org
$ # 編集
$ doas nvim /etc/containers/registries.conf
در پایان خطوط زیر را اضافه کنید:
+ [registries.search]
+ registries = ['docker.io']
یک وب سرور آزمایشی را اجرا کنید
Podman آماده استفاده است، اگرچه هنوز برخی از مشکلات وجود دارد که نیاز به رفع دارد. بیایید ظرف را اجرا کنیم و با آن بازی کنیم.
سرور httpd آپاچی را که Alpine اجرا می کند بکشید:
$ podman pull docker.io/httpd:alpine
هنگامی که آن را دارید، اجرا کنید:
$ podman run -p 8080:80 httpd:alpine
در مرورگر شما http://127.0.0.1:8080
دسترسی داشته باشیم
اینجوری نمایش داده نمیشه…😄
در نتیجه
پودمان از منظر امنیت و ثبات به دقت مورد توجه قرار گرفته است. اول اینکه Podman از دیمون استفاده نمی کند. این باعث میشود کمتر احتمال داشته باشد که یک کانتینر در یک ماشین مجازی روی کانتینرهای دیگر تأثیر منفی بگذارد. همچنین به طور پیشفرض روی کانتینری قرار میگیرد که به حقوق ریشه نیاز ندارد. این کار کانتینرهای در حال اجرا را ایمن تر می کند.
خوب است اگر Podman بتواند محیطی با قابلیت استفاده مجدد و استقلال بالا بسازد که منجر به بهبود بهره وری توسعه و بهبود محیط عملیاتی شود.