| podman-auto-update(1) | General Commands Manual | podman-auto-update(1) |
نام (NAME)
podman-auto-update - بهروزرسانی خودکار کانتینرها بر اساس خطمشی بهروزرسانی خودکار آنها
خلاصه دستور (SYNOPSIS)
podman auto-update [گزینهها]
توضیحات (DESCRIPTION)
دستور podman auto-update ایمیجهای جدید کانتینر را دریافت کرده و کانتینرهایی را که برای بهروزرسانی خودکار پیکربندی شدهاند مجدداً راهاندازی میکند. برای استفاده از قابلیت بهروزرسانی خودکار، کانتینر یا بارهای کاری کوبرنتیز باید درون یک واحد systemd اجرا شوند. پس از بهروزرسانی موفقیتآمیز یک ایمیج، کانتینرهایی که از آن ایمیج استفاده میکنند با راهاندازی مجدد واحدهای systemd که در آنها اجرا میشوند، بهروزرسانی خواهند شد. لطفاً برای نحوه اجرای پادمن تحت systemd به podman-systemd.unit(5) مراجعه کنید.
برای پیکربندی یک کانتینر جهت بهروزرسانی خودکار، کانتینر باید با برچسب io.containers.autoupdate یا فیلد AutoUpdate در podman-systemd.unit(5) با یکی از دو مقدار زیر ایجاد شود:
- registry: اگر این برچسب وجود داشته باشد و روی registry تنظیم شده باشد، پادمن با رجیستری مربوطه تماس میگیرد تا بررسی کند آیا ایمیج بهروزرسانی شده است یا خیر. برچسب image جایگزینی برای registry است که جهت سازگاری با نسخههای پیشین حفظ شده است. یک ایمیج در صورتی بهروزرسانیشده تلقی میشود که دایجست آن در ذخیرهساز محلی با دایجست ایمیج از راه دور متفاوت باشد. اگر ایمیجی باید بهروزرسانی شود، پادمن آن را دریافت کرده و واحد systemd مجری کانتینر را مجدداً راهاندازی میکند. خطمشی رجیستری نیازمند استفاده از یک ارجاع کامل ایمیج (fully-qualified، مانند quay.io/podman/stable:latest) برای ساخت کانتینر است. این الزام برای این است که مشخص شود دقیقاً کدام ایمیج باید بررسی و دریافت شود. اگر از شناسه ایمیج استفاده میشد، پادمن دیگر نمیدانست کدام ایمیج را بررسی یا دریافت کند.
- local: اگر برچسب autoupdate روی local تنظیم شود، پادمن دایجست ایمیج کانتینر را با دایجست موجود در ذخیرهساز کانتینر محلی مقایسه میکند. اگر متفاوت باشند، ایمیج محلی جدیدتر تلقی شده و واحد systemd مجدداً راهاندازی میشود.
بهروزرسانی خودکار و YAML کوبرنتیز (Auto Updates and Kubernetes YAML)
پادمن از بهروزرسانی خودکار برای بارهای کاری کوبرنتیز پشتیبانی میکند. خطمشی بهروزرسانی خودکار را میتوان مستقیماً از طریق podman-systemd.unit(5) یا در داخل YAML کوبرنتیز با حاشیهنویسیهای مخصوص پادمن که در ادامه ذکر شده، پیکربندی کرد:
- io.containers.autoupdate: مقدار "registry|local" برای اعمال خطمشی بهروزرسانی خودکار به تمام کانتینرها
- io.containers.autoupdate/$container: مقدار "registry|local" برای اعمال خطمشی بهروزرسانی خودکار تنها به $container
- io.containers.sdnotify: مقدار "conmon|container" برای اعمال خطمشی sdnotify به تمام کانتینرها
- io.containers.sdnotify/$container: مقدار "conmon|container" برای اعمال خطمشی sdnotify تنها به $container
بهطور پیشفرض، خطمشی autoupdate روی "disabled" و خطمشی sdnotify روی "conmon" تنظیم شده است.
واحد و تایمر Systemd (Systemd Unit and Timer)
پادمن همراه با یک واحد systemd به نام podman-auto-update.service ارائه میشود. این واحد روزانه در نیمهشب توسط تایمر systemd با نام podman-auto-update.timer فعال میشود. در صورت تمایل میتوان این تایمر را برای بهروزرسانیهای سفارشی مبتنی بر زمان تغییر داد. همچنین این واحد میتواند توسط سایر واحدهای systemd (مثلاً از طریق درخت وابستگی) یا به صورت دستی با دستور systemctl start podman-auto-update.service فراخوانی شود.
گزینهها (OPTIONS)
--authfile=مسیر
مسیر فایل احراز هویت. پیشفرض در لینوکس ${XDG_RUNTIME_DIR}/containers/auth.json و در ویندوز/مکاواس $HOME/.config/containers/auth.json است. این فایل توسط podman login ایجاد میشود. اگر وضعیت احراز هویت در آنجا یافت نشود، $HOME/.docker/config.json که با docker login تنظیم میشود، بررسی خواهد شد.
نکته: همچنین این گزینه وجود دارد که با تنظیم متغیر محیطی REGISTRY_AUTH_FILE مسیر پیشفرض فایل احراز هویت بازنویسی شود. این کار با دستور export REGISTRY_AUTH_FILE=path امکانپذیر است.
به عنوان روش دیگر، میتوان برچسب کانتینر io.containers.autoupdate.authfile را پیکربندی کرد. در این صورت، پادمن از مقدار برچسب مشخصشده استفاده خواهد کرد.
--dry-run
بررسی در دسترس بودن ایمیجهای جدید بدون انجام هیچگونه عملیات دریافت یا راهاندازی مجدد سرویس یا کانتینر. فیلد UPDATED در دسترس بودن ایمیج جدید را با وضعیت "pending" نشان میدهد.
--format=قالب
تغییر قالب خروجی پیشفرض. این مقدار میتواند نوعی پشتیبانیشده مانند 'json' یا یک قالب Go باشد. جاینگهدارهای معتبر برای قالب Go در زیر فهرست شدهاند:
| جاینگهدار | توضیحات |
| .Container | شناسه و نام کانتینر |
| .ContainerID | شناسه کانتینر |
| .ContainerName | نام کانتینر |
| .Image | نام ایمیج |
| .Policy | خطمشی بهروزرسانی خودکار کانتینر |
| .Unit | نام واحد systemd |
| .Updated | وضعیت بهروزرسانی: true، false، failed، pending |
--rollback
اگر راهاندازی مجدد یک واحد systemd پس از بهروزرسانی ایمیج با شکست مواجه شود، به ایمیج قبلی بازگردانی (rollback) انجام شده و واحد یک بار دیگر راهاندازی مجدد میشود. مقدار پیشفرض true است.
توجه داشته باشید که تشخیص شکست یک واحد systemd به بهترین نحو زمانی انجام میشود که کانتینر پیام READY را از طریق SDNOTIFY ارسال کند. به این ترتیب، راهاندازی مجدد واحد منتظر دریافت این پیام مانده یا مهلت زمانی (timeout) فرا میرسد. بدون آن، راهاندازی مجدد واحد systemd ممکن است با موفقیت ثبت شود، حتی اگر کانتینر اندکی پس از آن با شکست مواجه شده باشد.
برای اینکه یک کانتینر پیام READY را از طریق SDNOTIFY ارسال کند، باید با گزینه --sdnotify=container ایجاد شود (به podman-run(1) مراجعه کنید). برنامهای که درون کانتینر اجرا میشود میتواند در زمان آماده بودن دستور systemd-notify --ready را اجرا کند یا از بایندرهای sdnotify زبان برنامهنویسی خاص (مانند sd_notify(3)) استفاده نماید.
--tls-verify
الزام HTTPS و تایید گواهیها هنگام ارتباط با رجیستریها (پیشفرض: true). اگر به صراحت روی true تنظیم شود، اعتبارسنجی TLS اعمال میشود. اگر روی false تنظیم شود، اعتبارسنجی TLS اعمال نمیشود. اگر مشخص نشده باشد، اعتبارسنجی TLS استفاده میشود مگر اینکه رجیستری هدف در containers-registries.conf(5) به عنوان یک رجیستری ناامن ذکر شده باشد.
مثالها (EXAMPLES)
ایجاد یک فایل Quadlet پیکربندیشده برای بهروزرسانیهای خودکار:
$ cat ~/.config/containers/systemd/sleep.container [Container] Image=registry.fedoraproject.org/fedora:latest Exec=sleep infinity AutoUpdate=registry
تولید یک سرویس systemd از فایل Quadlet با بارگذاری مجدد دیمن کاربری systemd:
$ systemctl --user daemon-reload
شروع سرویس systemd و اطمینان از در حال اجرا بودن کانتینر:
$ systemctl --user start sleep.service $ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f8e4759798d4 registry.fedoraproject.org/fedora:latest sleep infinity 2 seconds ago Up 2 seconds systemd-sleep
بررسی در دسترس بودن ایمیج جدید از طریق --dry-run:
$ podman auto-update --dry-run --format "{{.Image}} {{.Updated}}"
registry.fedoraproject.org/fedora:latest pending
بهروزرسانی سرویس:
$ podman auto-update UNIT CONTAINER IMAGE POLICY UPDATED sleep.service f8e4759798d4 (systemd-sleep) registry.fedoraproject.org/fedora:latest registry true
همچنین ببینید (SEE ALSO)
podman(1), podman-generate-systemd(1), podman-run(1), podman-systemd.unit(5), sd_notify(3), systemd.unit(5)