runc-exec(8) System Manager's Manual runc-exec(8)

runc-exec - اجرای فرایند جدید درون کانتینر

runc exec [option ...] container-id [--] command [arg ...]

runc exec [option ...] -p process.json container-id

مسیر یک سوکت AF_UNIX که توصیف‌کننده فایلی ارجاع‌دهنده به انتهای اصلی (master) پایانه کاذب (pseudoterminal) کنسول را دریافت خواهد کرد. مستندات docs/terminals ⟨https://github.com/opencontainers/runc/blob/master/docs/terminals.md⟩ را ببینید.
قبل از اجرای دستور، دایرکتوری جاری در کانتینر را به path تغییر می‌دهد.
متغیر محیطی name را برابر با value قرار می‌دهد. می‌توان آن را چندین بار مشخص کرد.
یک پایانه کاذب (pseudo-TTY) اختصاص می‌دهد.
اجرای command به عنوان یک کاربر (و در صورت تمایل، گروه) مشخص‌شده با uid (و gid).
افزودن شناسه‌های گروهی (GID) اضافی. می‌توان آن را چندین بار مشخص کرد.
به جای مشخص کردن تمام پارامترهای exec مستقیماً در خط فرمان، آن‌ها را از process.json دریافت می‌کند؛ یک فایل JSON حاوی مشخصات فرایند، همان‌طور که توسط مشخصات زمان اجرای OCI ⟨https://github.com/opencontainers/runtime-spec/blob/master/config.md#process⟩ تعریف شده است.
جدا شدن از فرایند کانتینر.
مشخص کردن فایلی که شناسه فرایند (PID) کانتینر در آن نوشته شود.
تنظیم برچسب فرایند asm برای فرایند که معمولاً با selinux(7) استفاده می‌شود.
تنظیم profile مربوط به apparmor(7) برای فرایند.
تنظیم مقدار "عدم مجوزهای جدید" (no new privileges) برای فرایند.
افزودن یک قابلیت (capability) به مجموعه مرزی (bounding set) فرایند. می‌توان آن را چندین بار مشخص کرد.
انتقال N توصیف‌کننده فایل اضافی به کانتینر (در مجموع stdio + $LISTEN_FDS + N). پیش‌فرض 0 است.
اجازه دادن به اجرای دستور در کانتینر متوقف‌شده (paused). به طور پیش‌فرض اگر کانتینر متوقف باشد، runc exec با خطا خارج می‌شود؛ از این گزینه می‌توان برای نادیده گرفتن آن استفاده کرد. یک کانتینر متوقف‌شده باید برای تکمیل فرایند exec از حالت تعلیق خارج شود (resumed).
اجرای فرایند در یک زیرگروه کنترلی (sub-cgroup). اگر cgroup مشخص‌شده وجود نداشته باشد، خطایی برگردانده می‌شود. پیش‌فرض مسیر خالی است، به این معنی که از cgroup بالاترین سطح کانتینر استفاده شود.

تنها برای cgroup v1، یک controller خاص (یا چند کنترل‌کننده جداشده با کاما) می‌تواند مشخص شود، و این گزینه می‌تواند چندین بار برای تعیین مسیرهای مختلف برای کنترل‌کننده‌های مختلف به کار رود.

توجه داشته باشید که برای cgroup v2، در صورتی که فرایند نتواند به cgroup سطح بالا بپیوندد، راهکار جایگزین runc exec این است که برای پیوستن به cgroup مربوط به init کانتینر تلاش کند. این راهکار جایگزین را می‌توان با استفاده از --cgroup / غیرفعال کرد.

با وضعیت خروج command خارج می‌شود (مگر اینکه از -d استفاده شده باشد)، یا در صورت بروز خطا با 255 خارج می‌شود.

اگر کانتینر قادر به اجرای دستور ps(1) باشد، دستور زیر فهرستی از فرایندهای در حال اجرا در کانتینر را در خروجی چاپ خواهد کرد:

# runc exec <container-id> ps

runc(8).