| crun(1) | General Commands Manual | crun(1) |
نام (NAME)
crun - زمان اجرای OCI سریع و سبک
خلاصه دستور (SYNOPSIS)
crun [گزینههای عمومی] command [گزینههای دستور] [آرگومانها...]
توضیحات (DESCRIPTION)
دستور crun یک برنامه خط فرمانی برای اجرای کانتینرهای لینوکس مطابق با مشخصات OCI (ابتکار کانتینر باز) است.
دستورات (COMMANDS)
create ایجاد کانتینر. پس از آمادهسازی محیط کانتینر، زمان اجرا از فرایند کانتینر جدا میشود. برای راهاندازی کانتینر باید متعاقباً از دستور start استفاده شود.
delete حذف تعریف یک کانتینر.
exec اجرای یک فرمان درون کانتینر در حال اجرا.
list فهرست کردن کانتینرهای شناختهشده.
mounts add افزودن اتصالات (mounts) در زمان اجرای کانتینر. این دستور نیازمند دو آرگومان است: شناسه کانتینر و یک فایل JSON حاوی بخش اتصالات از فایل پیکربندی OCI. هر اتصال فهرستشده به کانتینر اضافه میشود. این دستور آزمایشی است و ممکن است بدون اطلاع قبلی تغییر کند.
mounts remove حذف اتصالات در زمان اجرای کانتینر. این دستور نیازمند دو آرگومان است: شناسه کانتینر و یک فایل JSON حاوی بخش اتصالات از فایل پیکربندی OCI. فقط صفت مقصد (destination) برای هر اتصال استفاده میشود. این دستور آزمایشی است و ممکن است بدون اطلاع قبلی تغییر کند.
kill ارسال سیگنال مشخصشده به فرایند init کانتینر. اگر سیگنالی مشخص نشود، SIGTERM ارسال میشود.
ps نمایش فرایندهای در حال اجرا درون کانتینر.
run ایجاد و راهاندازی فوری کانتینر.
spec تولید یک فایل پیکربندی نمونه.
start راهاندازی کانتینری که قبلاً ایجاد شده است. یک کانتینر را نمیتوان چندین بار راهاندازی کرد.
state خروجی دادن وضعیت جاری کانتینر.
pause متوقف کردن موقت (pause) تمامی فرایندهای درون کانتینر.
resume از سرگیری اجرای فرایندهای متوقفشده در کانتینر.
update بهروزرسانی محدودیتهای منابع کانتینر.
checkpoint تهیه نقطه بازرسی (checkpoint) از کانتینر در حال اجرا با استفاده از CRIU.
restore بازیابی کانتینر از یک نقطه بازرسی.
وضعیت (STATE)
بهطور پیشفرض، هنگام اجرا بهعنوان کاربر ریشه (root)، دستور crun وضعیت خود را در دایرکتوری /run/crun ذخیره میکند. در صورت اجرا بهعنوان کاربر غیرارشد، متغیر محیطی XDG_RUNTIME_DIR لحاظ شده و از دایرکتوری $XDG_RUNTIME_DIR/crun استفاده میشود. گزینه عمومی --root این تنظیم را بازنویسی میکند.
گزینههای عمومی (GLOBAL OPTIONS)
--debug تولید خروجی با جزئیات کامل.
--log=LOG-DESTINATION تعیین مقصد برای پیامهای خطا و هشدار تولیدشده توسط crun. اگر خطا در اواخر فرایند init کانتینر رخ دهد (زمانی که crun نظارت بر آن را متوقف کرده است)، در خطای استاندارد (stderr) کانتینر چاپ خواهد شد.
این گزینه به شکل BACKEND:SPECIFIER مشخص میشود.
بکاندهای زیر پشتیبانی میشوند:
- file:PATH
- journald:IDENTIFIER
- syslog:IDENTIFIER
اگر هیچ بکاندی مشخص نشود، بهطور پیشفرض از file: استفاده میشود.
--log-format=FORMAT تعیین قالب پیامهای لاگ. میتواند text یا json باشد. پیشفرض text است.
--log-level=LEVEL تعیین سطح لاگ. میتواند یکی از مقادیر debug، warning یا error باشد. پیشفرض error است.
--root=DIR تعیین محل ذخیره وضعیت کانتینرهای crun.
--systemd-cgroup استفاده از systemd برای پیکربندی cgroupها. در صورت عدم تعیین، cgroup مستقیماً با استفاده از بکاند cgroupfs ایجاد میشود.
--cgroup-manager=MANAGER تعیین مدیر cgroup مورد استفاده. مقادیر مجاز عبارتند از cgroupfs، systemd و disabled.
-?, --help چاپ فهرست راهنما.
--usage چاپ پیام کوتاه نحوه استفاده.
-V, --version چاپ نسخه برنامه.
گزینههای ایجاد (CREATE OPTIONS)
crun [global options] create [options] CONTAINER
--bundle=PATH مسیر به بسته OCI؛ بهطور پیشفرض دایرکتوری جاری است.
--config=FILE تغییر فایل پیکربندی مورد استفاده. مقدار پیشفرض config.json است.
--console-socket=SOCKET مسیر به سوکت یونیکس که انتهای ptmx ترمینال (tty) کانتینر را دریافت میکند.
--no-new-keyring نگهداشتن همان کلید نشست (session key).
--no-pivot استفاده از chroot(2) بهجای pivot_root(2) هنگام ایجاد کانتینر. این گزینه امن نیست و باید از آن اجتناب شود.
--preserve-fds=N تعداد توصیفکنندههای فایل اضافی (FD) برای ارسال به کانتینر.
--pid-file=PATH مسیر فایلی که شناسه فرایند (PID) کانتینر را در بر خواهد داشت.
گزینههای اجرا (RUN OPTIONS)
crun [global options] run [options] CONTAINER
--bundle=BUNDLE مسیر به بسته OCI؛ بهطور پیشفرض دایرکتوری جاری است.
--config=FILE تغییر فایل پیکربندی مورد استفاده. مقدار پیشفرض config.json است.
--console-socket=SOCKET مسیر به سوکت یونیکس که انتهای ptmx ترمینال (tty) کانتینر را دریافت میکند.
--no-new-keyring نگهداشتن همان کلید نشست.
--no-pivot استفاده از chroot(2) بهجای pivot_root(2) هنگام ایجاد کانتینر. این گزینه امن نیست و باید از آن اجتناب شود.
--preserve-fds=N تعداد توصیفکنندههای فایل اضافی برای ارسال به کانتینر.
--pid-file=PATH مسیر فایلی که شناسه فرایند (PID) کانتینر را در بر خواهد داشت.
--detach جدا کردن فرایند کانتینر از نشست جاری.
گزینههای حذف (DELETE OPTIONS)
crun [global options] delete [options] CONTAINER
--force حذف کانتینر حتی اگر همچنان در حال اجرا باشد.
--regex در نظر گرفتن CONTAINER بهعنوان عبارت منظم و حذف تمام کانتینرهای منطبق.
گزینههای اجرا در کانتینر (EXEC OPTIONS)
crun [global options] exec [options] CONTAINER CMD
--apparmor=PROFILE تنظیم پروفایل apparmor برای فرایند.
--console-socket=SOCKET مسیر به سوکت یونیکس که انتهای ptmx ترمینال کانتینر را دریافت میکند.
--cwd=PATH تنظیم دایرکتوری کاری برای فرایند روی PATH.
--cap=CAP تعیین قابلیت (capability) اضافی برای افزودن به فرایند.
--detach جدا کردن فرایند کانتینر از نشست جاری.
--cgroup=PATH تعیین مسیر زیرگروه cgroup در داخل cgroup کانتینر. این مسیر باید از قبل در cgroup کانتینر وجود داشته باشد.
--env=ENV تعیین یک متغیر محیطی.
--no-new-privs تنظیم مقدار عدم دریافت دسترسیهای جدید (no new privileges) برای فرایند.
--preserve-fds=N تعداد توصیفکنندههای فایل اضافی برای ارسال به کانتینر.
--process=FILE مسیر به فایل حاوی پیکربندی JSON فرایند.
--process-label=VALUE تنظیم برچسب فرایند asm که معمولاً با selinux استفاده میشود.
--pid-file=PATH مسیر فایلی که شناسه فرایند (PID) جدید را در بر خواهد داشت.
-t --tty تخصیص یک شبهترمینال (pseudo TTY).
-u USERSPEC --user=USERSPEC تعیین کاربر به فرمت UID[:GID].
گزینههای فهرست (LIST OPTIONS)
crun [global options] list [options]
-q --quiet نمایش تنها شناسه کانتینر.
گزینههای ارسال سیگنال (KILL OPTIONS)
crun [global options] kill [options] CONTAINER SIGNAL
--all کشتن تمام فرایندهای موجود در کانتینر.
--regex در نظر گرفتن CONTAINER بهعنوان عبارت منظم و ارسال سیگنال به تمام کانتینرهای منطبق.
گزینههای فرایندها (PS OPTIONS)
crun [global options] ps [options]
--format=FORMAT تعیین قالب خروجی. باید table یا json باشد. بهطور پیشفرض از table استفاده میشود.
گزینههای مشخصات (SPEC OPTIONS)
crun [global options] spec [options]
-b DIR --bundle=DIR مسیر به ریشه دایرکتوری بسته (پیشفرض ".").
--rootless تولید یک فایل config.json که برای کاربر غیرارشد قابل استفاده باشد.
گزینههای بهروزرسانی (UPDATE OPTIONS)
crun [global options] update [options] CONTAINER
--blkio-weight=VALUE تعیین وزن هر cgroup.
--cpu-period=VALUE دوره CPU CFS برای اعمال محدودیت سخت (hardcapping).
--cpu-quota=VALUE سقف سهمیه CPU CFS.
--cpu-rt-period=VALUE دوره بلادرنگ CPU برای اعمال محدودیت سخت.
--cpu-rt-runtime=VALUE سقف زمان اجرای بلادرنگ CPU.
--cpu-share=VALUE سهمهای CPU (shares).
--cpuset-cpus=VALUE پردازندههای مورد استفاده.
--cpuset-mems=VALUE گرههای حافظه مورد استفاده.
--kernel-memory=VALUE حد حافظه هسته.
--kernel-memory-tcp=VALUE حد حافظه هسته برای بافر TCP.
--memory=VALUE حد حافظه.
--memory-reservation=VALUE رزرو حافظه یا حد نرم (soft_limit).
--memory-swap=VALUE میزان کل حافظه و سواپ مصرفی.
--pids-limit=VALUE حداکثر تعداد شناسههای فرایند (PID) مجاز در کانتینر.
-r, --resources=FILE مسیر به فایل حاوی منابع برای بهروزرسانی.
گزینههای چکپوینت (CHECKPOINT OPTIONS)
crun [global options] checkpoint [options] CONTAINER
--image-path=DIR مسیر ذخیره فایلهای ایمیج CRIU.
--work-path=DIR مسیر ذخیره فایلهای کاری و لاگها.
--leave-running در حال اجرا باقی گذاشتن فرایند پس از تهیه چکپوینت.
--tcp-established مجاز شمردن اتصالات باز TCP.
--ext-unix-sk مجاز شمردن سوکتهای یونیکس خارجی.
--shell-job مجاز شمردن کارهای شل (shell jobs).
--pre-dump تنها چکپوینت گرفتن از حافظه کانتینر بدون متوقف ساختن آن. بازیابی کانتینر مستقیماً از pre-dump امکانپذیر نیست. pre-dump همواره نیازمند یک چکپوینت نهایی (بدون --pre-dump) است. میتوان به تعداد دلخواه pre-dump انجام داد. برای دومین pre-dump یا برای چکپوینت نهایی، استفاده از --parent-path برای ارجاع crun (و در نتیجه CRIU) به pre-dump ضروری است.
--parent-path=DIR انجام چندین pre-dump یا چکپوینت نهایی پس از یک یا چند pre-dump مستلزم آن است که crun (و در نتیجه CRIU) از مکان pre-dump مطلع باشد. استفاده از یک مسیر نسبی از دایرکتوری اصلی چکپوینت که توسط --image-path تعیین شده ضروری است. استفاده از مسیر مطلق با خطا مواجه خواهد شد.
--manage-cgroups-mode=MODE تعیین حالت مدیریت cgroup در CRIU. مقادیر مجاز عبارتند از soft، ignore، full یا strict. مقدار پیشفرض soft است.
گزینههای بازیابی (RESTORE OPTIONS)
crun [global options] restore [options] CONTAINER
-b DIR --bundle=DIR دایرکتوری بسته کانتینر (پیشفرض ".").
--image-path=DIR مسیر ذخیره فایلهای ایمیج CRIU.
--work-path=DIR مسیر ذخیره فایلهای کاری و لاگها.
--tcp-established مجاز شمردن اتصالات باز TCP.
--ext-unix مجاز شمردن سوکتهای یونیکس خارجی.
--shell-job مجاز شمردن کارهای شل.
--detach جدا شدن از فرایند کانتینر.
--pid-file=FILE محل نوشتن شناسه فرایند (PID) کانتینر.
--manage-cgroups-mode=MODE تعیین حالت مدیریت cgroup در CRIU. مقادیر مجاز عبارتند از soft، ignore، full یا strict. مقدار پیشفرض soft است.
--lsm-profile=TYPE:NAME تعیین پروفایل LSM مورد استفاده در طول بازیابی. مقدار TYPE میتواند apparmor یا selinux باشد.
--lsm-mount-context=VALUE تعیین بافت اتصال (mount context) جدید LSM در طول بازیابی. این گزینه اطلاعات بافت اتصال موجود را با مقدار مشخصشده جایگزین میکند. این امر زمانی مفید است که کانتینر در یک Pod موجود بازیابی میشود و برچسبهای selinux در زمان بازیابی باید تغییر کنند.
افزونههای OCI (Extensions to OCI)
run.oci.mount_context_type=context
تنظیم نوع بافت اتصال روی حجمهای متصلشده با برچسبهای SELinux.
انواع
بافت معتبر
عبارتند از:
context (پیشفرض)
fscontext
defcontext
rootcontext
اطلاعات بیشتر درباره نحوه عملکرد فلگهای بافت اتصال را میتوانید در صفحه راهنمای mount(8) بیابید.
run.oci.seccomp.receiver=PATH
اگر یادداشت (annotation) با عنوان run.oci.seccomp.receiver=PATH مشخص شود، شنونده seccomp به سوکت یونیکس ارسال میشود که در مسیر مشخصشده گوش میدهد. همچنین میتوان آن را با متغیر محیطی RUN_OCI_SECCOMP_RECEIVER تنظیم کرد. این یک ویژگی آزمایشی است و به محض پشتیبانی در مشخصات زمان اجرای OCI حذف خواهد شد. باید یک مسیر مطلق باشد.
run.oci.seccomp.plugins=PATH
اگر یادداشت run.oci.seccomp.plugins=PLUGIN1[:PLUGIN2]... مشخص شود، توصیفکننده فایل شنونده seccomp از طریق پلاگینهای مشخصشده مدیریت میشود. پلاگین یا باید یک مسیر مطلق باشد یا نام فایلی که توسط dlopen(3) پیدا شود. اطلاعات بیشتر درباره نحوه جستجو در صفحه راهنمای ld.so(8) موجود است.
run.oci.seccomp_fail_unknown_syscall=1
اگر یادداشت run.oci.seccomp_fail_unknown_syscall وجود داشته باشد، هنگامی که یک فراخوانی سیستمی ناشناخته در پیکربندی seccomp مشاهده شود، crun با خطا متوقف خواهد شد.
run.oci.seccomp_bpf_data=PATH
اگر یادداشت run.oci.seccomp_bpf_data وجود داشته باشد، crun بخش seccomp را در فایل پیکربندی OCI نادیده گرفته و از دادههای مشخصشده بهعنوان دادههای خام فراخوانی سیستمی seccomp(SECCOMP_SET_MODE_FILTER) استفاده میکند. دادهها باید با فرمت base64 کدگذاری شده باشند.
این یک ویژگی آزمایشی است و پس از پشتیبانی در مشخصات OCI حذف خواهد شد.
run.oci.keep_original_groups=1
اگر یادداشت run.oci.keep_original_groups وجود داشته باشد، crun فراخوانی سیستمی setgroups را که برای تنظیم گروههای اضافی مشخصشده در پیکربندی OCI یا بازنشانی لیست آنها استفاده میشود، نادیده میگیرد.
run.oci.pidfd_receiver=PATH
این یک ویژگی آزمایشی است و پس از گنجانده شدن در مشخصات OCI حذف خواهد شد.
در صورت وجود، مسیر سوکت یونیکسی را مشخص میکند که pidfd فرایند کانتینر را دریافت خواهد کرد.
run.oci.systemd.force_cgroup_v1=/PATH
اگر یادداشت run.oci.systemd.force_cgroup_v1=/PATH وجود داشته باشد، crun نقطه اتصال مشخصشده /PATH را با یک اتصال cgroup v1 متشکل از سلسلهمراتب منفرد none,name=systemd جایگزین میکند. این قابلیت برای اجرای کانتینرهایی که از نسخههای قدیمیتر systemd فاقد پشتیبانی از cgroup v2 استفاده میکنند، روی سیستمی با cgroup v2 کاربرد دارد.
نکته: میزبان کانتینر شما باید از قبل نقطه اتصال cgroup v1 را داشته باشد، در غیر این صورت کار نخواهد کرد. اگر قصد دارید کانتینر را بهصورت rootless اجرا کنید، کاربری که کانتینر تحت آن اجرا میشود باید دسترسی لازم به این نقطه اتصال را داشته باشد.
برای مثال، بهعنوان ریشه:
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
run.oci.systemd.subgroup=SUBGROUP
بازنویسی نام زیرگروه cgroup در systemd که تحت scope سیستمدی ایجاد میشود، به طوری که cgroup نهایی مانند زیر خواهد بود:
/sys/fs/cgroup/$PATH/$SUBGROUP
هنگامی که روی رشته خالی تنظیم شود، زیرگروه cgroup ایجاد نمیشود.
در صورت عدم تعیین، در cgroup v2 بهطور پیشفرض container و در cgroup v1 بهطور پیشفرض "" است.
برای مثال:
/sys/fs/cgroup//system.slice/foo-352700.scope/container
run.oci.delegate-cgroup=DELEGATED-CGROUP
اگر یادداشت run.oci.systemd.subgroup مشخص شود، زیرگروه دیگری ایجاد شده و فرایند کانتینر به آن منتقل میشود.
اگر از فضاینام cgroup استفاده شود، فضاینام cgroup قبل از انتقال کانتینر به cgroup تفویضشده (delegated) ایجاد میگردد.
/sys/fs/cgroup/$PATH/$SUBGROUP/$DELEGATED-CGROUP
زمان اجرا هیچ محدودیتی را روی زیرگروه $DELEGATED-CGROUP اعمال نمیکند و فقط از $PATH/$SUBGROUP استفاده میکند.
بار کاری کانتینر بهطور کامل $DELEGATE-CGROUP را مدیریت میکند، اما محدودیتهای اعمالشده روی $PATH/$SUBGROUP همچنان بر $DELEGATE-CGROUP نیز حاکم خواهد بود.
از آنجا که تفویض cgroup روی cgroup v1 امن نیست، این گزینه تنها روی cgroup v2 پشتیبانی میشود.
run.oci.hooks.stdout=FILE
اگر یادداشت run.oci.hooks.stdout وجود داشته باشد، crun فایل مشخصشده را باز کرده و از آن بهعنوان خروجی استاندارد برای فرایندهای هوک استفاده میکند. فایل در حالت الحاق (append) باز شده و در صورت عدم وجود ایجاد میشود.
run.oci.hooks.stderr=FILE
اگر یادداشت run.oci.hooks.stderr وجود داشته باشد، crun فایل مشخصشده را باز کرده و از آن بهعنوان خطای استاندارد برای فرایندهای هوک استفاده میکند. فایل در حالت الحاق باز شده و در صورت عدم وجود ایجاد میشود.
run.oci.handler=HANDLER
این یک ویژگی آزمایشی است.
در صورت تعیین، گرداننده مشخصشده برای اجرای کانتینر را اجرا میکند. مقادیر پشتیبانیشده تنها krun و wasm هستند.
- krun: هنگامی که krun مشخص شود، شیء مشترک libkrun.so بارگذاری شده و برای راهاندازی کانتینر با استفاده از libkrun به کار میرود.
- wasm: در صورت تعیین، گرداننده wasm برای کانتینر اجرا میشود. این ویژگی امکان اجرای بارهای کاری wasm را بهصورت بومی فراهم میکند. یک فایل باینری .wasm را بهعنوان ورودی میپذیرد و اگر .wat ارائه شود بهطور خودکار به ماژول wasm کامپایل خواهد شد. خروجی استاندارد ماژول wasm از طریق crun بازپخش میشود.
org.criu.config=FILE
این یادداشت امکان تعیین یک فایل پیکربندی CRIU RPC را فراهم میکند. در صورت عدم ارائه، crun به دنبال /etc/criu/crun.conf میگردد. اگر هیچکدام از یادداشت یا crun.conf موجود نباشد، از /etc/criu/runc.conf برای سازگاری با runc استفاده میشود. این قابلیت نیازمند CRIU نسخه 4.2 یا بالاتر است. گزینههای مشخصشده در فایل پیکربندی، مقادیر پیشفرض گزینههای CRIU مشخصشده توسط crun را بازنویسی میکنند. برای مثال، تعیین tcp-established یا tcp-close میتواند برای چکپوینت/بازیابی کانتینرهای دارای اتصالات برقرار TCP استفاده شود، و log-file=<file> برای تعیین فایل لاگ سفارشی CRIU به کار میرود.
گزینههای اتصال tmpcopyup (tmpcopyup mount options)
اگر گزینه tmpcopyup برای یک tmpfs تعیین شود، مسیری که توسط اتصال tmpfs پوشانده شده است بهطور بازگشتی به درون خود tmpfs کپی میشود.
گزینههای اتصال copy-symlink (copy-symlink mount options)
اگر گزینه copy-symlink تعیین شود، چنانچه مبدا یک اتصال bind یک پیوند نمادین باشد، پیوند نمادین در مقصد مشخصشده بازسازی میشود بهجای اینکه اتصالی تلاش کند خود پیوند نمادین را دنبال و حل کند. اگر مقصد از قبل وجود داشته باشد و پیوند نمادینی با محتوای مورد انتظار نباشد، crun خطایی را بازمیگرداند.
dest-nofollow
هنگامی که این گزینه برای اتصال bind مشخص شود، و مقصد اتصال یک پیوند نمادین باشد، crun خود پیوند نمادین را در مقصد متصل میکند.
src-nofollow
هنگامی که این گزینه برای اتصال bind مشخص شود، و مبدا اتصال یک پیوند نمادین باشد، crun بهجای فایل یا دایرکتوریای که پیوند به آن اشاره میکند، از خود پیوند نمادین استفاده خواهد کرد.
گزینههای اتصال r$FLAG (r$FLAG mount options)
اگر گزینه اتصال r$FLAG مشخص شود، فلگ $FLAG بهطور بازگشتی برای هر اتصال فرزند تنظیم میشود.
فلگهای زیر پشتیبانی میشوند:
- "rro"
- "rrw"
- "rsuid"
- "rnosuid"
- "rdev"
- "rnodev"
- "rexec"
- "rnoexec"
- "rsync"
- "rasync"
- "rdirsync"
- "rmand"
- "rnomand"
- "ratime"
- "rnoatime"
- "rdiratime"
- "rnodiratime"
- "rrelatime"
- "rnorelatime"
- "rstrictatime"
- "rnostrictatime"
گزینههای اتصال idmap (idmap mount options)
اگر گزینه idmap مشخص شود، اتصال با استفاده از فضاینام کاربر مقصد کانتینر نگاشت شناسه (ID mapped) میشود. این ویژگی آزمایشی است و در هر زمان ممکن است بدون اطلاع قبلی تغییر کند.
گزینه idmap از نگاشت سفارشی که میتواند با فضاینام کاربر مورد استفاده کانتینر متفاوت باشد پشتیبانی میکند.
نگاشت را میتوان پس از گزینه idmap مانند زیر مشخص کرد: idmap=uids=0-1-10#10-11-10;gids=0-100-10.
برای هر سهتایی (triplet)، مقدار اول شروع شناسههای سیستم فایل پشتیبان است که به مقدار دوم روی میزبان نگاشت میشوند. طول این نگاشت در مقدار سوم داده میشود.
محدودههای چندگانه با # از هم جدا میشوند.
این مقادیر در فایلهای /proc/$PID/uid_map و /proc/$PID/gid_map نوشته میشوند تا فضاینام کاربر را برای اتصال نگاشتشده با شناسه ایجاد کنند.
تنها دو گزینهای که در حال حاضر پس از idmap پشتیبانی میشوند uids و gids هستند.
هنگامی که یک نگاشت سفارشی مشخص شود، یک فضاینام کاربر جدید برای اتصال نگاشتشده ایجاد میگردد.
اگر هیچ گزینهای مشخص نشود، از فضاینام کاربر کانتینر استفاده میشود.
اگر نگاشت مشخصشده با یک کاراکتر '@' آغاز شود، نگاشت نسبت به فضاینام کاربر کانتینر در نظر گرفته میشود. شناسه میزبان برای این نگاشت تغییر مییابد تا موقعیت نسبی کاربر کانتینر در فضاینام کاربر کانتینر لحاظ شود.
برای مثال، نگاشت: uids=@1-3-10، با توجه به پیکربندی مانند:
"uidMappings": [
{
"containerID": 0,
"hostID": 0,
"size": 1
},
{
"containerID": 1,
"hostID": 2,
"size": 1000
}
]
به مقدار مطلق uids=1-4-10 تبدیل خواهد شد، که در آن عدد ۴ از جمع ۳ (شناسه کانتینر در نگاشت uids=) و ۱ (hostID - containerID برای نگاشت فضاینام کاربر در جایی که containerID = 1 یافت میشود) به دست آمده است.
پیادهسازی فعلی محدودههای چندگانه فضاینام کاربر را در نظر نمیگیرد، بنابراین مسئولیت تقسیم یک نگاشت در صورت همپوشانی با چندین محدوده در فضاینام کاربر بر عهده فراخواننده است. در چنین حالتی هیچ خطایی گزارش نخواهد شد.
ایجاد خودکار فضاینام کاربر (Automatically create user namespace)
هنگام اجرا بهعنوان کاربری غیر از ریشه، یک فضاینام کاربر بهطور خودکار ایجاد میشود حتی اگر در فایل پیکربندی مشخص نشده باشد. کاربر فعلی به شناسه 0 در کانتینر نگاشت میشود، و هر شناسه اضافی مشخصشده در فایلهای /etc/subuid و /etc/subgid بهطور خودکار از شناسه 1 شروع به اضافه شدن میکند.
گروه کنترل نسخه ۱ (CGROUP v1)
پشتیبانی از cgroup v1 منسوخ شده است و در انتشارات آینده حذف خواهد شد.
گروه کنترل نسخه ۲ (CGROUP v2)
نکته: نسخه 2 از cgroup هنوز از کنترل فرایندهای بلادرنگ (realtime) پشتیبانی نمیکند و کنترلکننده cpu تنها زمانی میتواند فعال شود که تمام فرایندهای RT در cgroup ریشه قرار داشته باشند. این امر باعث شکست crun در صورت اجرا در کنار فرایندهای RT میشود.
اگر پیکربندی cgroup یافتشده مربوط به cgroup v1 باشد، crun هنگام اجرا روی سیستم cgroup v2 تلاش میکند آن را تبدیل کند.
اینها منابع OCI هستند که در حال حاضر با cgroup v2 پشتیبانی میشوند و نحوه تبدیل آنها در صورت نیاز از پیکربندی cgroup v1 شرح داده شده است.
کنترلکننده حافظه (Memory controller)
| OCI (x) | cgroup 2 value (y) | conversion | comment |
| limit | memory.max | y = x | |
| swap | memory.swap.max | y = x - memory_limit | حد سواپ در cgroup v1 مصرف حافظه را نیز در بر میگیرد |
| reservation | memory.low | y = x |
کنترلکننده شناسههای فرایند (PIDs controller)
| OCI (x) | cgroup 2 value (y) | conversion | comment |
| limit | pids.max | y = x |
کنترلکننده پردازنده (CPU controller)
| OCI (x) | cgroup 2 value (y) | conversion | comment |
| shares | cpu.weight | y=10^((log2(x)^2 + 125 * log2(x)) / 612.0 - 7.0 / 34.0) | تبدیل از [2-262144] به [1-10000] |
| period | cpu.max | y = x | period و quota با هم نوشته میشوند |
| quota | cpu.max | y = x | period و quota با هم نوشته میشوند |
کنترلکننده ورودی/خروجی بلوکی (blkio controller)
| OCI (x) | cgroup 2 value (y) | conversion | comment |
| weight | io.bfq.weight | y = x | |
| weight_device | io.bfq.weight | y = x | |
| weight | io.weight (fallback) | y = 1 + (x-10)*9999/990 | تبدیل خطی از [10-1000] به [1-10000] |
| weight_device | io.weight (fallback) | y = 1 + (x-10)*9999/990 | تبدیل خطی از [10-1000] به [1-10000] |
| rbps | io.max | y=x | |
| wbps | io.max | y=x | |
| riops | io.max | y=x | |
| wiops | io.max | y=x |
کنترلکننده مجموعه پردازندهها (cpuset controller)
| OCI (x) | cgroup 2 value (y) | conversion | comment |
| cpus | cpuset.cpus | y = x | |
| mems | cpuset.mems | y = x |
کنترلکننده hugetlb (hugetlb controller)
| OCI (x) | cgroup 2 value (y) | conversion | comment |
| .limit_in_bytes | hugetlb..max | y = x |
| دستورات کاربر |