podman-container-runlabel(1) General Commands Manual podman-container-runlabel(1)

podman-container-runlabel - اجرای یک دستور بر اساس برچسب ایمیج کانتینر

podman container runlabel [options] label image [arg...]

دستور podman container runlabel برچسب (label) مشخص‌شده از ایمیج را می‌خواند و آن را به عنوان یک دستور روی میزبان اجرا می‌کند. اگر برچسب وجود نداشته باشد، پودمن با خطا خارج می‌شود. آرگومان‌های اضافی به انتهای دستور ضمیمه می‌شوند.

از گذشته، ایمیج‌های کانتینر محتویات (مانند لایه‌ها) و نحوه اجرای کانتینر توسط یک زمان اجرای کانتینر (مانند crun(1) یا runc(1)) را توصیف می‌کنند. به عنوان مثال، یک ایمیج ممکن است متغیرهای محیطی و دستور را در پیکربندی خود تعیین کند. با این حال، یک ایمیج کانتینر نمی‌تواند مستقیماً مشخص کند که یک موتور کانتینر مانند پودمن چگونه باید آن را اجرا کند. برای نمونه، پیکربندی یک ایمیج شامل اطلاعاتی درباره راه‌اندازهای گزارش‌گیری (log drivers)، فضاهای نام (namespaces)، یا قابلیت‌هایی (capabilities) که برای اجرای صحیح نیاز دارد، نمی‌شود.

دستور podman container runlabel این محدودیت ایمیج‌های کانتینر را به روشی ساده و در عین حال کارآمد برطرف می‌کند. پودمن محتویات برچسب را می‌خواند و آن را به عنوان دستوری که روی میزبان اجرا می‌شود تفسیر می‌کند. به این ترتیب یک ایمیج می‌تواند دقیقاً نحوه اجرای خود توسط پودمن را توصیف کند. برای مثال، یک برچسب با محتوای /usr/bin/podman run -d --pid=host --privileged \${IMAGE} به ایمیج دستور می‌دهد در یک کانتینر جداشده (detached) و دارای امتیاز ویژه (privileged) که از فضای نام PID میزبان استفاده می‌کند اجرا شود. این امر توصیف خود ایمیج کانتینر را از «چه چیزی» به «چگونه» ارتقا می‌دهد.

توجه داشته باشید که دستور runlabel منحصراً برای اجرا در محیط‌های مورد اعتماد در نظر گرفته شده است. استفاده از این دستور روی ایمیج‌های غیرقابل اعتماد توصیه نمی‌شود.

محتویات یک برچسب ممکن است به متغیرهای زیر ارجاع دهد که در حین پردازش برچسب جایگزین می‌شوند.

IMAGE نام ایمیج. هنگام اجرای podman container runlabel label fedora متغیر IMAGE با fedora جایگزین می‌شود. قالب‌های معتبر عبارتند از IMAGE، $IMAGE، ${IMAGE} و =IMAGE.

NAME همان‌طور که توسط گزینه --name مشخص شده است. قالب آن مشابه ویژگی IMAGE است.

PWD با دایرکتوری کاری فعلی جایگزین خواهد شد.

مسیر فایل احراز هویت. پیش‌فرض در لینوکس ${XDG_RUNTIME_DIR}/containers/auth.json و در Windows/macOS برابر با $HOME/.config/containers/auth.json است. این فایل توسط podman login ایجاد می‌شود. اگر وضعیت احراز هویت در آنجا یافت نشود، $HOME/.docker/config.json بررسی می‌شود که با استفاده از docker login تنظیم می‌گردد.

نکته: همچنین این امکان وجود دارد که مسیر پیش‌فرض فایل احراز هویت را با تنظیم متغیر محیطی REGISTRY_AUTH_FILE بازنویسی کرد. این کار با export REGISTRY_AUTH_FILE=path امکان‌پذیر است.

استفاده از گواهی‌های موجود در path (*.crt, *.cert, *.key) برای اتصال به مخزن (رجیستری). (پیش‌فرض: /etc/containers/certs.d) برای جزئیات، containers-certs.d(5) را ببینید. (این گزینه در کلاینت ریموت پودمن، از جمله ماشین‌های Mac و Windows (به‌استثنای WSL2) در دسترس نیست)

مقدار [username[:password]] برای استفاده در احراز هویت با رجیستری، در صورت لزوم. اگر یک یا هر دو مقدار ارائه نشوند، اعلان خط فرمان ظاهر می‌شود و می‌توان مقدار را وارد کرد. رمز عبور بدون بازتاب وارد می‌شود.

توجه داشته باشید که اعتبارنامه‌های مشخص‌شده تنها برای احراز هویت در برابر رجیستری‌های هدف استفاده می‌شوند. آن‌ها برای آینه‌ها (mirrors) یا زمانی که رجیستری بازنویسی می‌شود استفاده نمی‌شوند (به containers-registries.conf(5) مراجعه کنید)؛ برای احراز هویت در برابر آن‌ها استفاده از فایل containers-auth.json(5) را مد نظر قرار دهید.

نمایش مقدار برچسب ایمیج پس از پر شدن متغیرهای محیطی آن. در صورت تعیین --display، دستور runlabel اجرا نمی‌شود.

چاپ راهنمای استفاده

استفاده از این نام برای ایجاد محتوا برای کانتینر. در صورت عدم تعیین، نام به‌طور پیش‌فرض به نام ایمیج تنظیم می‌شود.

سرکوب اطلاعات خروجی هنگام دریافت (pull) ایمیج‌ها

اگر کانتینری با نام فعلی وجود داشته باشد، متوقف و حذف می‌شود و کانتینر جدیدی از این ایمیج ایجاد می‌گردد.

الزام به HTTPS و اعتبارسنجی گواهی‌ها هنگام تماس با رجیستری‌ها (پیش‌فرض: true). اگر صراحتاً روی true تنظیم شود، اعتبارسنجی TLS استفاده می‌شود. اگر روی false تنظیم شود، اعتبارسنجی TLS استفاده نمی‌شود. در صورت عدم تعیین، اعتبارسنجی TLS استفاده می‌شود مگر اینکه رجیستری هدف در containers-registries.conf(5) به عنوان یک رجیستری ناامن فهرست شده باشد.

اجرای برچسب run از یک ایمیج به نام foobar.

$ podman container runlabel run foobar

اجرای برچسب install از ایمیج foobar با آرگومان‌های اضافی.

$ podman container runlabel install foobar apples oranges

نمایش محتویات برچسب run از ایمیج foobar.

$ podman container runlabel --display run foobar

اجرای مجدد یک کانتینر با استفاده از برچسبی که نام ثابتی برای کانتینر تعیین می‌کند. پرچم --replace اطمینان حاصل می‌کند که هر کانتینر موجود ابتدا حذف شود.

$ podman ps -a
CONTAINER ID  IMAGE                             COMMAND               CREATED         STATUS                     PORTS       NAMES
1254c038d892  docker.io/library/busybox:latest  echo Hello from r...  26 seconds ago  Exited (0) 26 seconds ago              test-runlabel
$ podman container runlabel --replace RUN runlabel-test
Hello from runlabel
$ podman ps -a
CONTAINER ID  IMAGE                             COMMAND               CREATED        STATUS                    PORTS       NAMES
28efd9600d0c  docker.io/library/busybox:latest  echo Hello from r...  4 seconds ago  Exited (0) 4 seconds ago              test-runlabel

این دستور زمانی مفید است که برچسب از یک نام ثابت (مانند --name mycontainer) استفاده می‌کند و شما می‌خواهید آن را بارها بدون حذف دستی کانتینر قبلی اجرا نمایید.

podman(1), crun(1), runc(8), containers-certs.d(5), containers-auth.json(5), containers-registries.conf(5)

اوت ۲۰۲۱، اصلاحات توسط Valentin Rothberg (rothberg at redhat dot com)

سپتامبر ۲۰۱۸، در ابتدا توسط Brent Baude (bbaude at redhat dot com) گردآوری شد