پرش به محتوا

Toolbx و Podman بدون root در Fedora

محیط توسعه‌ی جداگانه با Toolbx بسازید تا سیستم اصلی تمیز بماند، و سرویس‌ها را با Podman بدون دسترسی root اجرا و با systemd خودکار کنید.

Fedora 45سطح: مقدماتیبه‌روزرسانی: ۱۷ آبان ۱۴۰۵

۱. Toolbx: محیط کار جداگانه

Toolbx یک کانتینر Fedora می‌سازد که پوشه‌ی خانه، کاربر و نمایشگر شما را به اشتراک می‌گذارد. ابزارهای توسعه را داخل آن نصب کنید تا سیستم اصلی به‌هم نریزد:

bash
sudo dnf install -y toolbox
toolbox create dev
toolbox enter dev
# inside the toolbox:
sudo dnf install -y gcc make nodejs golang
exit

یک نسخه‌ی دیگر از Fedora، مثلاً برای آزمایش نرم‌افزار روی نسخه‌ی قبلی:

bash
toolbox create --release 44 f44
toolbox list
toolbox rm -f f44

۲. Podman بدون root

Podman به daemon نیاز ندارد و کانتینرها با کاربر عادی اجرا می‌شوند:

bash
podman run -d --name web -p 8080:80 docker.io/library/nginx:stable
podman ps
curl -I http://127.0.0.1:8080
podman logs web

کاربر عادی پورت‌های زیر ۱۰۲۴ را نمی‌تواند باز کند. از 8080 استفاده کنید و پراکسی را جلوی آن بگذارید.

۳. اجرای خودکار با Quadlet

به‌جای podman generate systemd (که منسوخ شده)، یک فایل .container بسازید:

bash
mkdir -p ~/.config/containers/systemd
cat > ~/.config/containers/systemd/web.container <<'EOT'
[Container]
Image=docker.io/library/nginx:stable
PublishPort=8080:80
Volume=%h/site:/usr/share/nginx/html:ro,Z
AutoUpdate=registry

[Service]
Restart=always

[Install]
WantedBy=default.target
EOT
mkdir -p ~/site && echo '<h1>Fedora</h1>' > ~/site/index.html
podman rm -f web
systemctl --user daemon-reload
systemctl --user start web
systemctl --user status web --no-pager

برچسب :Z در Volume برچسب SELinux پوشه را برای کانتینر درست می‌کند. بدون آن کانتینر به فایل‌ها دسترسی ندارد.

برای اینکه سرویس بدون ورود کاربر هم بعد از راه‌اندازی مجدد اجرا شود:

bash
sudo loginctl enable-linger "$USER"

۴. به‌روزرسانی خودکار ایمیج

bash
systemctl --user enable --now podman-auto-update.timer
podman auto-update --dry-run