برنامه نویسی

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 محیط‌هایی را به ارمغان بیاورد که تا حد امکان قابل استفاده مجدد و ایزوله باشند و بهره‌وری یا عملیات پیشرفته‌تری داشته باشید.

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

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

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

همچنین ببینید
بستن
دکمه بازگشت به بالا