'\" t .nh .TH crun 1 "دستورات کاربر" .SH "نام (NAME)" crun \- زمان اجرای OCI سریع و سبک .SH "خلاصه دستور (SYNOPSIS)" crun [گزینه‌های عمومی] command [گزینه‌های دستور] [آرگومان‌ها...] .SH "توضیحات (DESCRIPTION)" دستور crun یک برنامه خط فرمانی برای اجرای کانتینرهای لینوکس مطابق با مشخصات OCI (ابتکار کانتینر باز) است. .SH "دستورات (COMMANDS)" \fBcreate\fP ایجاد کانتینر. پس از آماده‌سازی محیط کانتینر، زمان اجرا از فرایند کانتینر جدا می‌شود. برای راه‌اندازی کانتینر باید متعاقباً از دستور \fBstart\fR استفاده شود. .PP \fBdelete\fP حذف تعریف یک کانتینر. .PP \fBexec\fP اجرای یک فرمان درون کانتینر در حال اجرا. .PP \fBlist\fP فهرست کردن کانتینرهای شناخته‌شده. .PP \fBmounts add\fP افزودن اتصالات (mounts) در زمان اجرای کانتینر. این دستور نیازمند دو آرگومان است: شناسه کانتینر و یک فایل JSON حاوی بخش اتصالات از فایل پیکربندی OCI. هر اتصال فهرست‌شده به کانتینر اضافه می‌شود. این دستور آزمایشی است و ممکن است بدون اطلاع قبلی تغییر کند. .PP \fBmounts remove\fP حذف اتصالات در زمان اجرای کانتینر. این دستور نیازمند دو آرگومان است: شناسه کانتینر و یک فایل JSON حاوی بخش اتصالات از فایل پیکربندی OCI. فقط صفت مقصد (destination) برای هر اتصال استفاده می‌شود. این دستور آزمایشی است و ممکن است بدون اطلاع قبلی تغییر کند. .PP \fBkill\fP ارسال سیگنال مشخص‌شده به فرایند init کانتینر. اگر سیگنالی مشخص نشود، SIGTERM ارسال می‌شود. .PP \fBps\fP نمایش فرایندهای در حال اجرا درون کانتینر. .PP \fBrun\fP ایجاد و راه‌اندازی فوری کانتینر. .PP \fBspec\fP تولید یک فایل پیکربندی نمونه. .PP \fBstart\fP راه‌اندازی کانتینری که قبلاً ایجاد شده است. یک کانتینر را نمی‌توان چندین بار راه‌اندازی کرد. .PP \fBstate\fP خروجی دادن وضعیت جاری کانتینر. .PP \fBpause\fP متوقف کردن موقت (pause) تمامی فرایندهای درون کانتینر. .PP \fBresume\fP از سرگیری اجرای فرایندهای متوقف‌شده در کانتینر. .PP \fBupdate\fP به‌روزرسانی محدودیت‌های منابع کانتینر. .PP \fBcheckpoint\fP تهیه نقطه بازرسی (checkpoint) از کانتینر در حال اجرا با استفاده از CRIU. .PP \fBrestore\fP بازیابی کانتینر از یک نقطه بازرسی. .SH "وضعیت (STATE)" به‌طور پیش‌فرض، هنگام اجرا به‌عنوان کاربر ریشه (root)، دستور crun وضعیت خود را در دایرکتوری \fB/run/crun\fP ذخیره می‌کند. در صورت اجرا به‌عنوان کاربر غیرارشد، متغیر محیطی \fIXDG_RUNTIME_DIR\fP لحاظ شده و از دایرکتوری \fB$XDG_RUNTIME_DIR/crun\fP استفاده می‌شود. گزینه عمومی \fB--root\fP این تنظیم را بازنویسی می‌کند. .SH "گزینه‌های عمومی (GLOBAL OPTIONS)" \fB--debug\fP تولید خروجی با جزئیات کامل. .PP \fB--log\fP=\fILOG-DESTINATION\fP تعیین مقصد برای پیام‌های خطا و هشدار تولیدشده توسط crun. اگر خطا در اواخر فرایند init کانتینر رخ دهد (زمانی که crun نظارت بر آن را متوقف کرده است)، در خطای استاندارد (stderr) کانتینر چاپ خواهد شد. .PP این گزینه به شکل \fIBACKEND:SPECIFIER\fP\& مشخص می‌شود. .PP بک‌اندهای زیر پشتیبانی می‌شوند: .IP \(bu 2 file:PATH .IP \(bu 2 journald:IDENTIFIER .IP \(bu 2 syslog:IDENTIFIER .PP اگر هیچ بک‌اندی مشخص نشود، به‌طور پیش‌فرض از \fIfile:\fP استفاده می‌شود. .PP \fB--log-format\fP=\fIFORMAT\fP تعیین قالب پیام‌های لاگ. می‌تواند \fBtext\fP یا \fBjson\fP\& باشد. پیش‌فرض \fBtext\fP\& است. .PP \fB--log-level\fP=\fILEVEL\fP تعیین سطح لاگ. می‌تواند یکی از مقادیر \fBdebug\fP، \fBwarning\fP یا \fBerror\fP\& باشد. پیش‌فرض \fBerror\fP\& است. .PP \fB--root\fP=\fIDIR\fP تعیین محل ذخیره وضعیت کانتینرهای crun. .PP \fB--systemd-cgroup\fP استفاده از systemd برای پیکربندی cgroupها. در صورت عدم تعیین، cgroup مستقیماً با استفاده از بک‌اند cgroupfs ایجاد می‌شود. .PP \fB--cgroup-manager\fP=\fIMANAGER\fP تعیین مدیر cgroup مورد استفاده. مقادیر مجاز عبارتند از \fBcgroupfs\fP، \fBsystemd\fP و \fBdisabled\fP\&. .PP \fB-?\fP, \fB--help\fP چاپ فهرست راهنما. .PP \fB--usage\fP چاپ پیام کوتاه نحوه استفاده. .PP \fB-V\fP, \fB--version\fP چاپ نسخه برنامه. .SH "گزینه‌های ایجاد (CREATE OPTIONS)" crun [global options] create [options] CONTAINER .PP \fB--bundle\fP=\fIPATH\fP مسیر به بسته OCI؛ به‌طور پیش‌فرض دایرکتوری جاری است. .PP \fB--config\fP=\fIFILE\fP تغییر فایل پیکربندی مورد استفاده. مقدار پیش‌فرض \fBconfig.json\fP\& است. .PP \fB--console-socket\fP=\fISOCKET\fP مسیر به سوکت یونیکس که انتهای ptmx ترمینال (tty) کانتینر را دریافت می‌کند. .PP \fB--no-new-keyring\fP نگه‌داشتن همان کلید نشست (session key). .PP \fB--no-pivot\fP استفاده از \fBchroot(2)\fR به‌جای \fBpivot_root(2)\fR هنگام ایجاد کانتینر. این گزینه امن نیست و باید از آن اجتناب شود. .PP \fB--preserve-fds\fP=\fIN\fP تعداد توصیف‌کننده‌های فایل اضافی (FD) برای ارسال به کانتینر. .PP \fB--pid-file\fP=\fIPATH\fP مسیر فایلی که شناسه فرایند (PID) کانتینر را در بر خواهد داشت. .SH "گزینه‌های اجرا (RUN OPTIONS)" crun [global options] run [options] CONTAINER .PP \fB--bundle\fP=\fIBUNDLE\fP مسیر به بسته OCI؛ به‌طور پیش‌فرض دایرکتوری جاری است. .PP \fB--config\fP=\fIFILE\fP تغییر فایل پیکربندی مورد استفاده. مقدار پیش‌فرض \fBconfig.json\fP\& است. .PP \fB--console-socket\fP=\fISOCKET\fP مسیر به سوکت یونیکس که انتهای ptmx ترمینال (tty) کانتینر را دریافت می‌کند. .PP \fB--no-new-keyring\fP نگه‌داشتن همان کلید نشست. .PP \fB--no-pivot\fP استفاده از \fBchroot(2)\fR به‌جای \fBpivot_root(2)\fR هنگام ایجاد کانتینر. این گزینه امن نیست و باید از آن اجتناب شود. .PP \fB--preserve-fds\fP=\fIN\fP تعداد توصیف‌کننده‌های فایل اضافی برای ارسال به کانتینر. .PP \fB--pid-file\fP=\fIPATH\fP مسیر فایلی که شناسه فرایند (PID) کانتینر را در بر خواهد داشت. .PP \fB--detach\fP جدا کردن فرایند کانتینر از نشست جاری. .SH "گزینه‌های حذف (DELETE OPTIONS)" crun [global options] delete [options] CONTAINER .PP \fB--force\fP حذف کانتینر حتی اگر همچنان در حال اجرا باشد. .PP \fB--regex\fP در نظر گرفتن \fICONTAINER\fP به‌عنوان عبارت منظم و حذف تمام کانتینرهای منطبق. .SH "گزینه‌های اجرا در کانتینر (EXEC OPTIONS)" crun [global options] exec [options] CONTAINER CMD .PP \fB--apparmor\fP=\fIPROFILE\fP تنظیم پروفایل apparmor برای فرایند. .PP \fB--console-socket\fP=\fISOCKET\fP مسیر به سوکت یونیکس که انتهای ptmx ترمینال کانتینر را دریافت می‌کند. .PP \fB--cwd\fP=\fIPATH\fP تنظیم دایرکتوری کاری برای فرایند روی PATH. .PP \fB--cap\fP=\fICAP\fP تعیین قابلیت (capability) اضافی برای افزودن به فرایند. .PP \fB--detach\fP جدا کردن فرایند کانتینر از نشست جاری. .PP \fB--cgroup\fP=\fIPATH\fP تعیین مسیر زیرگروه cgroup در داخل cgroup کانتینر. این مسیر باید از قبل در cgroup کانتینر وجود داشته باشد. .PP \fB--env\fP=\fIENV\fP تعیین یک متغیر محیطی. .PP \fB--no-new-privs\fP تنظیم مقدار عدم دریافت دسترسی‌های جدید (no new privileges) برای فرایند. .PP \fB--preserve-fds\fP=\fIN\fP تعداد توصیف‌کننده‌های فایل اضافی برای ارسال به کانتینر. .PP \fB--process\fP=\fIFILE\fP مسیر به فایل حاوی پیکربندی JSON فرایند. .PP \fB--process-label\fP=\fIVALUE\fP تنظیم برچسب فرایند asm که معمولاً با selinux استفاده می‌شود. .PP \fB--pid-file\fP=\fIPATH\fP مسیر فایلی که شناسه فرایند (PID) جدید را در بر خواهد داشت. .PP \fB-t\fP \fB--tty\fP تخصیص یک شبه‌ترمینال (pseudo TTY). .PP \fB-u\fP \fIUSERSPEC\fP \fB--user\fP=\fIUSERSPEC\fP تعیین کاربر به فرمت UID[:GID]. .SH "گزینه‌های فهرست (LIST OPTIONS)" crun [global options] list [options] .PP \fB-q\fP \fB--quiet\fP نمایش تنها شناسه کانتینر. .SH "گزینه‌های ارسال سیگنال (KILL OPTIONS)" crun [global options] kill [options] CONTAINER SIGNAL .PP \fB--all\fP کشتن تمام فرایندهای موجود در کانتینر. .PP \fB--regex\fP در نظر گرفتن \fICONTAINER\fP به‌عنوان عبارت منظم و ارسال سیگنال به تمام کانتینرهای منطبق. .SH "گزینه‌های فرایندها (PS OPTIONS)" crun [global options] ps [options] .PP \fB--format\fP=\fIFORMAT\fP تعیین قالب خروجی. باید \fBtable\fR یا \fBjson\fR\& باشد. به‌طور پیش‌فرض از \fBtable\fR استفاده می‌شود. .SH "گزینه‌های مشخصات (SPEC OPTIONS)" crun [global options] spec [options] .PP \fB-b\fP \fIDIR\fP \fB--bundle\fP=\fIDIR\fP مسیر به ریشه دایرکتوری بسته (پیش‌فرض "."). .PP \fB--rootless\fP تولید یک فایل config.json که برای کاربر غیرارشد قابل استفاده باشد. .SH "گزینه‌های به‌روزرسانی (UPDATE OPTIONS)" crun [global options] update [options] CONTAINER .PP \fB--blkio-weight\fP=\fIVALUE\fP تعیین وزن هر cgroup. .PP \fB--cpu-period\fP=\fIVALUE\fP دوره CPU CFS برای اعمال محدودیت سخت (hardcapping). .PP \fB--cpu-quota\fP=\fIVALUE\fP سقف سهمیه CPU CFS. .PP \fB--cpu-rt-period\fP=\fIVALUE\fP دوره بلادرنگ CPU برای اعمال محدودیت سخت. .PP \fB--cpu-rt-runtime\fP=\fIVALUE\fP سقف زمان اجرای بلادرنگ CPU. .PP \fB--cpu-share\fP=\fIVALUE\fP سهم‌های CPU (shares). .PP \fB--cpuset-cpus\fP=\fIVALUE\fP پردازنده‌های مورد استفاده. .PP \fB--cpuset-mems\fP=\fIVALUE\fP گره‌های حافظه مورد استفاده. .PP \fB--kernel-memory\fP=\fIVALUE\fP حد حافظه هسته. .PP \fB--kernel-memory-tcp\fP=\fIVALUE\fP حد حافظه هسته برای بافر TCP. .PP \fB--memory\fP=\fIVALUE\fP حد حافظه. .PP \fB--memory-reservation\fP=\fIVALUE\fP رزرو حافظه یا حد نرم (soft_limit). .PP \fB--memory-swap\fP=\fIVALUE\fP میزان کل حافظه و سواپ مصرفی. .PP \fB--pids-limit\fP=\fIVALUE\fP حداکثر تعداد شناسه‌های فرایند (PID) مجاز در کانتینر. .PP \fB-r\fP, \fB--resources\fP=\fIFILE\fP مسیر به فایل حاوی منابع برای به‌روزرسانی. .SH "گزینه‌های چک‌پوینت (CHECKPOINT OPTIONS)" crun [global options] checkpoint [options] CONTAINER .PP \fB--image-path\fP=\fIDIR\fP مسیر ذخیره فایل‌های ایمیج CRIU. .PP \fB--work-path\fP=\fIDIR\fP مسیر ذخیره فایل‌های کاری و لاگ‌ها. .PP \fB--leave-running\fP در حال اجرا باقی گذاشتن فرایند پس از تهیه چک‌پوینت. .PP \fB--tcp-established\fP مجاز شمردن اتصالات باز TCP. .PP \fB--ext-unix-sk\fP مجاز شمردن سوکت‌های یونیکس خارجی. .PP \fB--shell-job\fP مجاز شمردن کارهای شل (shell jobs). .PP \fB--pre-dump\fP تنها چک‌پوینت گرفتن از حافظه کانتینر بدون متوقف ساختن آن. بازیابی کانتینر مستقیماً از pre-dump امکان‌پذیر نیست. pre-dump همواره نیازمند یک چک‌پوینت نهایی (بدون \fB--pre-dump\fP) است. می‌توان به تعداد دلخواه pre-dump انجام داد. برای دومین pre-dump یا برای چک‌پوینت نهایی، استفاده از \fB--parent-path\fP برای ارجاع crun (و در نتیجه CRIU) به pre-dump ضروری است. .PP \fB--parent-path\fP=\fIDIR\fP انجام چندین pre-dump یا چک‌پوینت نهایی پس از یک یا چند pre-dump مستلزم آن است که crun (و در نتیجه CRIU) از مکان pre-dump مطلع باشد. استفاده از یک مسیر نسبی از دایرکتوری اصلی چک‌پوینت که توسط \fB--image-path\fP تعیین شده ضروری است. استفاده از مسیر مطلق با خطا مواجه خواهد شد. .PP \fB--manage-cgroups-mode\fP=\fIMODE\fP تعیین حالت مدیریت cgroup در CRIU. مقادیر مجاز عبارتند از \fBsoft\fP، \fBignore\fP، \fBfull\fP یا \fBstrict\fP\&. مقدار پیش‌فرض \fBsoft\fP\& است. .SH "گزینه‌های بازیابی (RESTORE OPTIONS)" crun [global options] restore [options] CONTAINER .PP \fB-b DIR\fP \fB--bundle\fP=\fIDIR\fP دایرکتوری بسته کانتینر (پیش‌فرض "."). .PP \fB--image-path\fP=\fIDIR\fP مسیر ذخیره فایل‌های ایمیج CRIU. .PP \fB--work-path\fP=\fIDIR\fP مسیر ذخیره فایل‌های کاری و لاگ‌ها. .PP \fB--tcp-established\fP مجاز شمردن اتصالات باز TCP. .PP \fB--ext-unix\fP مجاز شمردن سوکت‌های یونیکس خارجی. .PP \fB--shell-job\fP مجاز شمردن کارهای شل. .PP \fB--detach\fP جدا شدن از فرایند کانتینر. .PP \fB--pid-file\fP=\fIFILE\fP محل نوشتن شناسه فرایند (PID) کانتینر. .PP \fB--manage-cgroups-mode\fP=\fIMODE\fP تعیین حالت مدیریت cgroup در CRIU. مقادیر مجاز عبارتند از \fBsoft\fP، \fBignore\fP، \fBfull\fP یا \fBstrict\fP\&. مقدار پیش‌فرض \fBsoft\fP\& است. .PP \fB--lsm-profile\fP=\fITYPE\fP:\fINAME\fP تعیین پروفایل LSM مورد استفاده در طول بازیابی. مقدار \fITYPE\fP می‌تواند \fBapparmor\fP یا \fBselinux\fP\& باشد. .PP \fB--lsm-mount-context\fP=\fIVALUE\fP تعیین بافت اتصال (mount context) جدید LSM در طول بازیابی. این گزینه اطلاعات بافت اتصال موجود را با مقدار مشخص‌شده جایگزین می‌کند. این امر زمانی مفید است که کانتینر در یک Pod موجود بازیابی می‌شود و برچسب‌های selinux در زمان بازیابی باید تغییر کنند. .SH "افزونه‌های OCI (Extensions to OCI)" .SH \fBrun.oci.mount_context_type=context\fR تنظیم نوع بافت اتصال روی حجم‌های متصل‌شده با برچسب‌های SELinux. .PP انواع بافت معتبر عبارتند از: context (پیش‌فرض) fscontext defcontext rootcontext .PP اطلاعات بیشتر درباره نحوه عملکرد فلگ‌های بافت اتصال را می‌توانید در صفحه راهنمای \fBmount(8)\fR بیابید. .SH \fBrun.oci.seccomp.receiver=PATH\fR اگر یادداشت (annotation) با عنوان \fBrun.oci.seccomp.receiver=PATH\fR مشخص شود، شنونده seccomp به سوکت یونیکس ارسال می‌شود که در مسیر مشخص‌شده گوش می‌دهد. همچنین می‌توان آن را با متغیر محیطی \fBRUN_OCI_SECCOMP_RECEIVER\fR تنظیم کرد. این یک ویژگی آزمایشی است و به محض پشتیبانی در مشخصات زمان اجرای OCI حذف خواهد شد. باید یک مسیر مطلق باشد. .SH \fBrun.oci.seccomp.plugins=PATH\fR اگر یادداشت \fBrun.oci.seccomp.plugins=PLUGIN1[:PLUGIN2]...\fR مشخص شود، توصیف‌کننده فایل شنونده seccomp از طریق پلاگین‌های مشخص‌شده مدیریت می‌شود. پلاگین یا باید یک مسیر مطلق باشد یا نام فایلی که توسط \fBdlopen(3)\fR\& پیدا شود. اطلاعات بیشتر درباره نحوه جستجو در صفحه راهنمای \fBld.so(8)\fR موجود است. .SH \fBrun.oci.seccomp_fail_unknown_syscall=1\fR اگر یادداشت \fBrun.oci.seccomp_fail_unknown_syscall\fR وجود داشته باشد، هنگامی که یک فراخوانی سیستمی ناشناخته در پیکربندی seccomp مشاهده شود، crun با خطا متوقف خواهد شد. .SH \fBrun.oci.seccomp_bpf_data=PATH\fR اگر یادداشت \fBrun.oci.seccomp_bpf_data\fR وجود داشته باشد، crun بخش seccomp را در فایل پیکربندی OCI نادیده گرفته و از داده‌های مشخص‌شده به‌عنوان داده‌های خام فراخوانی سیستمی \fBseccomp(SECCOMP_SET_MODE_FILTER)\fR استفاده می‌کند. داده‌ها باید با فرمت base64 کدگذاری شده باشند. .PP این یک ویژگی آزمایشی است و پس از پشتیبانی در مشخصات OCI حذف خواهد شد. .SH \fBrun.oci.keep_original_groups=1\fR اگر یادداشت \fBrun.oci.keep_original_groups\fR وجود داشته باشد، crun فراخوانی سیستمی \fBsetgroups\fR را که برای تنظیم گروه‌های اضافی مشخص‌شده در پیکربندی OCI یا بازنشانی لیست آن‌ها استفاده می‌شود، نادیده می‌گیرد. .SH \fBrun.oci.pidfd_receiver=PATH\fR این یک ویژگی آزمایشی است و پس از گنجانده شدن در مشخصات OCI حذف خواهد شد. .PP در صورت وجود، مسیر سوکت یونیکسی را مشخص می‌کند که pidfd فرایند کانتینر را دریافت خواهد کرد. .SH \fBrun.oci.systemd.force_cgroup_v1=/PATH\fR اگر یادداشت \fBrun.oci.systemd.force_cgroup_v1=/PATH\fR وجود داشته باشد، crun نقطه اتصال مشخص‌شده \fB/PATH\fR را با یک اتصال cgroup v1 متشکل از سلسله‌مراتب منفرد \fBnone,name=systemd\fR\& جایگزین می‌کند. این قابلیت برای اجرای کانتینرهایی که از نسخه‌های قدیمی‌تر systemd فاقد پشتیبانی از cgroup v2 استفاده می‌کنند، روی سیستمی با cgroup v2 کاربرد دارد. .PP \fBنکته\fP: میزبان کانتینر شما باید از قبل نقطه اتصال cgroup v1 را داشته باشد، در غیر این صورت کار نخواهد کرد. اگر قصد دارید کانتینر را به‌صورت rootless اجرا کنید، کاربری که کانتینر تحت آن اجرا می‌شود باید دسترسی لازم به این نقطه اتصال را داشته باشد. .PP برای مثال، به‌عنوان ریشه: .EX mkdir /sys/fs/cgroup/systemd mount cgroup -t cgroup /sys/fs/cgroup/systemd -o none,name=systemd,xattr chown -R the_user.the_user /sys/fs/cgroup/systemd .EE .SH \fBrun.oci.systemd.subgroup=SUBGROUP\fR بازنویسی نام زیرگروه cgroup در systemd که تحت scope سیستم‌دی ایجاد می‌شود، به طوری که cgroup نهایی مانند زیر خواهد بود: .EX /sys/fs/cgroup/$PATH/$SUBGROUP .EE .PP هنگامی که روی رشته خالی تنظیم شود، زیرگروه cgroup ایجاد نمی‌شود. .PP در صورت عدم تعیین، در cgroup v2 به‌طور پیش‌فرض \fBcontainer\fR و در cgroup v1 به‌طور پیش‌فرض \fB""\fR است. .PP برای مثال: .EX /sys/fs/cgroup//system.slice/foo-352700.scope/container .EE .SH \fBrun.oci.delegate-cgroup=DELEGATED-CGROUP\fR اگر یادداشت \fBrun.oci.systemd.subgroup\fR مشخص شود، زیرگروه دیگری ایجاد شده و فرایند کانتینر به آن منتقل می‌شود. .PP اگر از فضای‌نام cgroup استفاده شود، فضای‌نام cgroup قبل از انتقال کانتینر به cgroup تفویض‌شده (delegated) ایجاد می‌گردد. .EX /sys/fs/cgroup/$PATH/$SUBGROUP/$DELEGATED-CGROUP .EE .PP زمان اجرا هیچ محدودیتی را روی زیرگروه \fB$DELEGATED-CGROUP\fR اعمال نمی‌کند و فقط از \fB$PATH/$SUBGROUP\fR\& استفاده می‌کند. .PP بار کاری کانتینر به‌طور کامل \fB$DELEGATE-CGROUP\fR را مدیریت می‌کند، اما محدودیت‌های اعمال‌شده روی \fB$PATH/$SUBGROUP\fR همچنان بر \fB$DELEGATE-CGROUP\fR\& نیز حاکم خواهد بود. .PP از آنجا که تفویض cgroup روی cgroup v1 امن نیست، این گزینه تنها روی cgroup v2 پشتیبانی می‌شود. .SH \fBrun.oci.hooks.stdout=FILE\fR اگر یادداشت \fBrun.oci.hooks.stdout\fR وجود داشته باشد، crun فایل مشخص‌شده را باز کرده و از آن به‌عنوان خروجی استاندارد برای فرایندهای هوک استفاده می‌کند. فایل در حالت الحاق (append) باز شده و در صورت عدم وجود ایجاد می‌شود. .SH \fBrun.oci.hooks.stderr=FILE\fR اگر یادداشت \fBrun.oci.hooks.stderr\fR وجود داشته باشد، crun فایل مشخص‌شده را باز کرده و از آن به‌عنوان خطای استاندارد برای فرایندهای هوک استفاده می‌کند. فایل در حالت الحاق باز شده و در صورت عدم وجود ایجاد می‌شود. .SH \fBrun.oci.handler=HANDLER\fR این یک ویژگی آزمایشی است. .PP در صورت تعیین، گرداننده مشخص‌شده برای اجرای کانتینر را اجرا می‌کند. مقادیر پشتیبانی‌شده تنها \fBkrun\fR و \fBwasm\fR\& هستند. .IP \(bu 2 \fBkrun\fR: هنگامی که \fBkrun\fR مشخص شود، شیء مشترک \fBlibkrun.so\fR بارگذاری شده و برای راه‌اندازی کانتینر با استفاده از libkrun به کار می‌رود. .IP \(bu 2 \fBwasm\fR: در صورت تعیین، گرداننده wasm برای کانتینر اجرا می‌شود. این ویژگی امکان اجرای بارهای کاری wasm را به‌صورت بومی فراهم می‌کند. یک فایل باینری \fB\&.wasm\fR را به‌عنوان ورودی می‌پذیرد و اگر \fB\&.wat\fR ارائه شود به‌طور خودکار به ماژول wasm کامپایل خواهد شد. خروجی استاندارد ماژول wasm از طریق crun بازپخش می‌شود. .SH \fBorg.criu.config=FILE\fR این یادداشت امکان تعیین یک فایل پیکربندی CRIU RPC را فراهم می‌کند. در صورت عدم ارائه، crun به دنبال \fB/etc/criu/crun.conf\fR\& می‌گردد. اگر هیچ‌کدام از یادداشت یا \fBcrun.conf\fR موجود نباشد، از \fB/etc/criu/runc.conf\fR برای سازگاری با runc استفاده می‌شود. این قابلیت نیازمند CRIU نسخه 4.2 یا بالاتر است. گزینه‌های مشخص‌شده در فایل پیکربندی، مقادیر پیش‌فرض گزینه‌های CRIU مشخص‌شده توسط crun را بازنویسی می‌کنند. برای مثال، تعیین \fBtcp-established\fR یا \fBtcp-close\fR می‌تواند برای چک‌پوینت/بازیابی کانتینرهای دارای اتصالات برقرار TCP استفاده شود، و \fBlog-file=\fR برای تعیین فایل لاگ سفارشی CRIU به کار می‌رود. .SH "گزینه‌های اتصال tmpcopyup (tmpcopyup mount options)" اگر گزینه \fBtmpcopyup\fR برای یک tmpfs تعیین شود، مسیری که توسط اتصال tmpfs پوشانده شده است به‌طور بازگشتی به درون خود tmpfs کپی می‌شود. .SH "گزینه‌های اتصال copy-symlink (copy-symlink mount options)" اگر گزینه \fBcopy-symlink\fR تعیین شود، چنانچه مبدا یک اتصال bind یک پیوند نمادین باشد، پیوند نمادین در مقصد مشخص‌شده بازسازی می‌شود به‌جای اینکه اتصالی تلاش کند خود پیوند نمادین را دنبال و حل کند. اگر مقصد از قبل وجود داشته باشد و پیوند نمادینی با محتوای مورد انتظار نباشد، crun خطایی را بازمی‌گرداند. .SH "dest-nofollow" هنگامی که این گزینه برای اتصال bind مشخص شود، و مقصد اتصال یک پیوند نمادین باشد، \fBcrun\fR خود پیوند نمادین را در مقصد متصل می‌کند. .SH "src-nofollow" هنگامی که این گزینه برای اتصال bind مشخص شود، و مبدا اتصال یک پیوند نمادین باشد، \fBcrun\fR به‌جای فایل یا دایرکتوری‌ای که پیوند به آن اشاره می‌کند، از خود پیوند نمادین استفاده خواهد کرد. .SH "گزینه‌های اتصال r$FLAG (r$FLAG mount options)" اگر گزینه اتصال \fBr$FLAG\fR مشخص شود، فلگ \fB$FLAG\fR به‌طور بازگشتی برای هر اتصال فرزند تنظیم می‌شود. .PP فلگ‌های زیر پشتیبانی می‌شوند: .IP \(bu 2 "rro" .IP \(bu 2 "rrw" .IP \(bu 2 "rsuid" .IP \(bu 2 "rnosuid" .IP \(bu 2 "rdev" .IP \(bu 2 "rnodev" .IP \(bu 2 "rexec" .IP \(bu 2 "rnoexec" .IP \(bu 2 "rsync" .IP \(bu 2 "rasync" .IP \(bu 2 "rdirsync" .IP \(bu 2 "rmand" .IP \(bu 2 "rnomand" .IP \(bu 2 "ratime" .IP \(bu 2 "rnoatime" .IP \(bu 2 "rdiratime" .IP \(bu 2 "rnodiratime" .IP \(bu 2 "rrelatime" .IP \(bu 2 "rnorelatime" .IP \(bu 2 "rstrictatime" .IP \(bu 2 "rnostrictatime" .SH "گزینه‌های اتصال idmap (idmap mount options)" اگر گزینه \fBidmap\fR مشخص شود، اتصال با استفاده از فضای‌نام کاربر مقصد کانتینر نگاشت شناسه (ID mapped) می‌شود. این ویژگی آزمایشی است و در هر زمان ممکن است بدون اطلاع قبلی تغییر کند. .PP گزینه \fBidmap\fR از نگاشت سفارشی که می‌تواند با فضای‌نام کاربر مورد استفاده کانتینر متفاوت باشد پشتیبانی می‌کند. .PP نگاشت را می‌توان پس از گزینه \fBidmap\fR مانند زیر مشخص کرد: \fBidmap=uids=0-1-10#10-11-10;gids=0-100-10\fR\&. .PP برای هر سه‌تایی (triplet)، مقدار اول شروع شناسه‌های سیستم فایل پشتیبان است که به مقدار دوم روی میزبان نگاشت می‌شوند. طول این نگاشت در مقدار سوم داده می‌شود. .PP محدوده‌های چندگانه با \fB#\fR\& از هم جدا می‌شوند. .PP این مقادیر در فایل‌های \fB/proc/$PID/uid_map\fR و \fB/proc/$PID/gid_map\fR نوشته می‌شوند تا فضای‌نام کاربر را برای اتصال نگاشت‌شده با شناسه ایجاد کنند. .PP تنها دو گزینه‌ای که در حال حاضر پس از \fBidmap\fR پشتیبانی می‌شوند \fBuids\fR و \fBgids\fR\& هستند. .PP هنگامی که یک نگاشت سفارشی مشخص شود، یک فضای‌نام کاربر جدید برای اتصال نگاشت‌شده ایجاد می‌گردد. .PP اگر هیچ گزینه‌ای مشخص نشود، از فضای‌نام کاربر کانتینر استفاده می‌شود. .PP اگر نگاشت مشخص‌شده با یک کاراکتر '@' آغاز شود، نگاشت نسبت به فضای‌نام کاربر کانتینر در نظر گرفته می‌شود. شناسه میزبان برای این نگاشت تغییر می‌یابد تا موقعیت نسبی کاربر کانتینر در فضای‌نام کاربر کانتینر لحاظ شود. .PP برای مثال، نگاشت: \fBuids=@1-3-10\fR، با توجه به پیکربندی مانند: .EX "uidMappings": [ { "containerID": 0, "hostID": 0, "size": 1 }, { "containerID": 1, "hostID": 2, "size": 1000 } ] .EE .PP به مقدار مطلق \fBuids=1-4-10\fR تبدیل خواهد شد، که در آن عدد ۴ از جمع ۳ (شناسه کانتینر در نگاشت \fBuids=\fR) و ۱ (\fBhostID - containerID\fR برای نگاشت فضای‌نام کاربر در جایی که \fBcontainerID = 1\fR یافت می‌شود) به دست آمده است. .PP پیاده‌سازی فعلی محدوده‌های چندگانه فضای‌نام کاربر را در نظر نمی‌گیرد، بنابراین مسئولیت تقسیم یک نگاشت در صورت همپوشانی با چندین محدوده در فضای‌نام کاربر بر عهده فراخواننده است. در چنین حالتی هیچ خطایی گزارش نخواهد شد. .SH "ایجاد خودکار فضای‌نام کاربر (Automatically create user namespace)" هنگام اجرا به‌عنوان کاربری غیر از ریشه، یک فضای‌نام کاربر به‌طور خودکار ایجاد می‌شود حتی اگر در فایل پیکربندی مشخص نشده باشد. کاربر فعلی به شناسه 0 در کانتینر نگاشت می‌شود، و هر شناسه اضافی مشخص‌شده در فایل‌های \fB/etc/subuid\fR و \fB/etc/subgid\fR به‌طور خودکار از شناسه 1 شروع به اضافه شدن می‌کند. .SH "گروه کنترل نسخه ۱ (CGROUP v1)" پشتیبانی از cgroup v1 منسوخ شده است و در انتشارات آینده حذف خواهد شد. .SH "گروه کنترل نسخه ۲ (CGROUP v2)" \fBنکته\fP: نسخه 2 از cgroup هنوز از کنترل فرایندهای بلادرنگ (realtime) پشتیبانی نمی‌کند و کنترل‌کننده cpu تنها زمانی می‌تواند فعال شود که تمام فرایندهای RT در cgroup ریشه قرار داشته باشند. این امر باعث شکست crun در صورت اجرا در کنار فرایندهای RT می‌شود. .PP اگر پیکربندی cgroup یافت‌شده مربوط به cgroup v1 باشد، crun هنگام اجرا روی سیستم cgroup v2 تلاش می‌کند آن را تبدیل کند. .PP این‌ها منابع OCI هستند که در حال حاضر با cgroup v2 پشتیبانی می‌شوند و نحوه تبدیل آن‌ها در صورت نیاز از پیکربندی cgroup v1 شرح داده شده است. .SH "کنترل‌کننده حافظه (Memory controller)" .TS allbox; l l l l l l l l . \fBOCI (x)\fP \fBcgroup 2 value (y)\fP \fBconversion\fP \fBcomment\fP limit memory.max y = x swap memory.swap.max y = x - memory_limit T{ حد سواپ در cgroup v1 مصرف حافظه را نیز در بر می‌گیرد T} reservation memory.low y = x .TE .SH "کنترل‌کننده شناسه‌های فرایند (PIDs controller)" .TS allbox; l l l l l l l l . \fBOCI (x)\fP \fBcgroup 2 value (y)\fP \fBconversion\fP \fBcomment\fP limit pids.max y = x .TE .SH "کنترل‌کننده پردازنده (CPU controller)" .TS allbox; l l l l l l l l . \fBOCI (x)\fP \fBcgroup 2 value (y)\fP \fBconversion\fP \fBcomment\fP shares cpu.weight T{ y=10^((log2(x)^2 + 125 * log2(x)) / 612.0 - 7.0 / 34.0) T} T{ تبدیل از [2-262144] به [1-10000] T} period cpu.max y = x T{ period و quota با هم نوشته می‌شوند T} quota cpu.max y = x T{ period و quota با هم نوشته می‌شوند T} .TE .SH "کنترل‌کننده ورودی/خروجی بلوکی (blkio controller)" .TS allbox; l l l l l l l l . \fBOCI (x)\fP \fBcgroup 2 value (y)\fP \fBconversion\fP \fBcomment\fP weight io.bfq.weight y = x weight_device io.bfq.weight y = x weight io.weight (fallback) y = 1 + (x-10)*9999/990 T{ تبدیل خطی از [10-1000] به [1-10000] T} weight_device io.weight (fallback) y = 1 + (x-10)*9999/990 T{ تبدیل خطی از [10-1000] به [1-10000] T} rbps io.max y=x wbps io.max y=x riops io.max y=x wiops io.max y=x .TE .SH "کنترل‌کننده مجموعه پردازنده‌ها (cpuset controller)" .TS allbox; l l l l l l l l . \fBOCI (x)\fP \fBcgroup 2 value (y)\fP \fBconversion\fP \fBcomment\fP cpus cpuset.cpus y = x mems cpuset.mems y = x .TE .SH "کنترل‌کننده hugetlb (hugetlb controller)" .TS allbox; l l l l l l l l . \fBOCI (x)\fP \fBcgroup 2 value (y)\fP \fBconversion\fP \fBcomment\fP \&.limit_in_bytes hugetlb.\&.max y = x .TE