'" t .nh .TH podman-create 1 .SH "نام (NAME)" podman-create \- ایجاد یک کانتینر جدید بدون شروع اجرای آن .SH "خلاصه دستور (SYNOPSIS)" \fBpodman create\fP [\fIگزینه‌ها\fP] \fIایمیج\fP [\fIدستور\fP [\fIآرگومان‌ها\fP...]] .SH "توضیحات (DESCRIPTION)" یک لایه کانتینر قابل نوشتن روی ایمیج مشخص‌شده ایجاد کرده و آن را برای اجرای دستور آماده می‌سازد. شناسه (ID) کانتینر در خروجی استاندارد چاپ می‌شود. این کار مشابه \fBpodman run -d\fR است به جز اینکه کانتینر هرگز شروع به کار نمی‌کند. برای اجرای کانتینر بعداً می‌توانید از دستور \fBpodman start\fR استفاده کنید. .SH "گزینه‌ها (OPTIONS)" .SS \fB--add-host\fP=\fIhostname[;hostname[;...]]\fP:\fIip\fP افزودن یک نگاشت سفارشی میزبان به IP (به صورت host=ip یا host:ip). .PP افزودن یک خط به /etc/hosts. قالب به صورت hostname=ip یا hostname:ip است. گزینه \fB--add-host\fP می‌تواند چندین بار مشخص شود. .SS \fB--annotation\fP=\fIkey=value\fP افزودن یادداشت (annotation) به کانتینر (منتقل‌شده به زمان اجرای OCI) .PP \fB-a\fP, \fB--attach\fP= اتصال به STDIN، STDOUT یا STDERR .SS \fB--arch\fP=\fIARCH\fP .PP تنظیم ARCH تصویر مورد نظر برای واکشی روی مقدار ارائه‌شده به جای استفاده از معماری میزبان. (نمونه‌ها: arm، arm64، 386، amd64، ppc64le، s390x) .SS \fB--attach\fP, \fB-a\fP=\fIstdin\fP | \fIstdout\fP | \fIstderr\fP .PP متصل کردن ورودی استاندارد (stdin)، خروجی استاندارد (stdout) یا خطای استاندارد (stderr). .SS \fB--authfile\fP=\fIpath\fP .PP مسیر فایل احراز هویت. پیش‌فرض ${XDG_RUNTIME_DIR}/containers/auth.json است. برای اطلاعات بیشتر به containers-auth.json(5) مراجعه کنید. این فایل با استفاده از \fBpodman login\fR\& ایجاد می‌شود. .PP اگر وضعیت مجوزدهی در آنجا یافت نشود، $HOME/.podman/config.json بررسی می‌شود که با استفاده از \fBpodman login\fR\& تنظیم شده است. .PP نکته: همچنین می‌توانید مسیر پیش‌فرض فایل احراز هویت را با تنظیم متغیر محیطی REGISTRY_AUTH_FILE بازنویسی کنید. \fBexport REGISTRY_AUTH_FILE=path\fR .SS \fB--blkio-weight\fP=\fIweight\fP ورودی/خروجی بلوکی (وزن نسبی)، بین 10 تا 1000، یا 0 برای غیرفعال‌سازی (پیش‌فرض 0) .SS \fB--blkio-weight-device\fP=\fIdevice:weight\fP وزن ورودی/خروجی بلوکی (وزن نسبی دستگاه) .SS \fB--cap-add\fP=\fIcapability\fP افزودن قابلیت‌های لینوکس (Linux capabilities) .SS \fB--cap-drop\fP=\fIcapability\fP حذف قابلیت‌های لینوکس (Linux capabilities) .SS \fB--cert-dir\fP=\fIpath\fP .PP استفاده از گواهی‌ها در \fIpath\fP (*\&.crt، *\&.cert، *\&.key) برای اتصال به رجیستری. دایرکتوری پیش‌فرض گواهی‌ها \fI/etc/containers/certs.d\fP\& است. .SS \fB--cgroup-conf\fP=\fIKEY=VALUE\fP .PP پیکربندی منابع cgroup v2 برای کانتینر. .SS \fB--cgroup-parent\fP=\fIpath\fP گروه کنترلی (cgroup) والد اختیاری برای کانتینر .SS \fB--cgroupns\fP=\fImode\fP فضای نام cgroup مورد استفاده (host|private) \&'host': اجرای کانتینر در فضای نام cgroup میزبان داکر \&'private': اجرای کانتینر در فضای نام cgroup خصوصی خودش \&'': استفاده از فضای نام cgroup پیکربندی‌شده توسط گزینه default-cgroupns-mode در دیمن (پیش‌فرض) .SS \fB--cgroups\fP=\fIhow\fP .PP تعیین نحوه مدیریت گروه کنترلی (cgroup) کانتینر (مانند enabled یا disabled یا no-conmon). .SS \fB--chrootdirs\fP=\fIpath\fP .PP مسیر دایرکتوری‌های chroot روی سیستم میزبان برای استفاده در کانتینر. .SS \fB--cidfile\fP=\fIfile\fP نوشتن شناسه کانتینر درون فایل .SS \fB--conmon-pidfile\fP=\fIfile\fP .PP مسیر فایل برای ثبت شناسه فرآیند (PID) مانیتور conmon. .SS \fB--cpu-period\fP=\fIlimit\fP محدود کردن دوره CFS (زمان‌بند کاملاً منصفانه) پردازنده .SS \fB--cpu-quota\fP=\fIlimit\fP محدود کردن سهمیه CFS (زمان‌بند کاملاً منصفانه) پردازنده .SS \fB--cpu-rt-period\fP=\fImicroseconds\fP محدود کردن دوره بی‌درنگ (real-time) پردازنده بر حسب میکروثانیه .SS \fB--cpu-rt-runtime\fP=\fImicroseconds\fP محدود کردن زمان اجرای بی‌درنگ (real-time) پردازنده بر حسب میکروثانیه .PP \fB-c\fP, \fB--cpu-shares\fP=0 سهم پردازنده (وزن نسبی) .SS \fB--cpu-shares\fP, \fB-c\fP=\fIshares\fP .PP سهم‌های پردازنده (وزن نسبی) .PP به‌طور پیش‌فرض، همه کانتینرها سهم یکسانی از چرخه‌های پردازنده دریافت می‌کنند. این نسبت می‌تواند با تغییر وزن سهم پردازنده کانتینر نسبت به وزن سایر کانتینرهای در حال اجرا اصلاح شود. .PP برای تغییر نسبت از مقدار پیش‌فرض 1024، از پرچم \fB--cpu-shares\fP برای تنظیم وزن به 2 یا بالاتر استفاده کنید. .PP این نسبت تنها زمانی اعمال خواهد شد که فرایندهای با بار پردازشی بالا در حال اجرا باشند. هنگامی که وظایف در یک کانتینر بیکار هستند، کانتینرهای دیگر می‌توانند از زمان پردازنده باقی‌مانده استفاده کنند. مقدار واقعی زمان پردازنده بسته به تعداد کانتینرهای در حال اجرا روی سیستم متغیر خواهد بود. .PP به عنوان مثال، سه کانتینر را در نظر بگیرید که یکی دارای cpu-share معادل 1024 و دو کانتینر دیگر دارای تنظیم cpu-share برابر با 512 هستند. هنگامی که فرایندها در هر سه کانتینر تلاش می‌کنند از %100 پردازنده استفاده کنند، کانتینر اول %50 از کل زمان پردازنده را دریافت خواهد کرد. اگر کانتینر چهارمی با cpu-share معادل 1024 اضافه کنید، کانتینر اول تنها %33 از پردازنده را دریافت می‌کند. کانتینرهای باقی‌مانده %16.5، %16.5 و %33 از پردازنده را دریافت خواهند کرد. .PP روی یک سیستم چند‌هسته‌ای، سهم‌های زمان پردازنده میان تمام هسته‌های پردازنده توزیع می‌شود. حتی اگر یک کانتینر به کمتر از %100 زمان پردازنده محدود شده باشد، می‌تواند از %100 هر هسته پردازنده به صورت جداگانه استفاده کند. .PP به عنوان مثال، سیستمی با بیش از سه هسته را در نظر بگیرید. اگر یک کانتینر \fB{C0}\fP را با \fB-c=512\fP در حال اجرای یک فرایند، و کانتینر دیگری \fB{C1}\fP را با \fB-c=1024\fP در حال اجرای دو فرایند راه‌اندازی کنید، این کار می‌تواند منجر به تقسیم سهم‌های پردازنده به شکل زیر شود: .EX PID container CPU CPU share 100 {C0} 0 100% of CPU0 101 {C1} 1 100% of CPU1 102 {C1} 2 100% of CPU2 .EE .SS \fB--cpus\fP=\fInumber\fP تعداد پردازنده‌ها .SS \fB--cpuset-cpus\fP=\fInumber\fP پردازنده‌های مجاز برای اجرا (0-3, 0,1) .SS \fB--cpuset-mems\fP=\fInodes\fP گره‌های حافظه مجاز برای اجرا (0-3, 0,1) .SS \fB--creds\fP=\fI[username[:password]]\fP .PP مقدار [username[:password]] برای استفاده در احراز هویت با رجیستری در صورت نیاز. اگر یک یا هر دو مقدار ارائه نشوند، یک اعلان در خط فرمان ظاهر می‌شود و مقدار می‌تواند وارد شود. گذرواژه بدون بازتاب وارد می‌شود. .SS \fB--decryption-key\fP=\fIkey[:passphrase]\fP .PP مقدار [key[:passphrase]] برای استفاده در رمزگشایی تصاویر. کلید می‌تواند به کلیدها و/یا گواهی‌ها اشاره کند. رمزگشایی با تمام کلیدها امتحان خواهد شد. اگر کلید با یک عبارت عبور (passphrase) محافظت شده باشد، ارسال آن در آرگومان الزامی است و در غیر این صورت حذف می‌شود. .SS \fB--device\fP=\fIhost-device[:container-device][:permissions]\fP افزودن دستگاه میزبان به کانتینر .SS \fB--device-cgroup-rule\fP=\fI"type major:minor mode"\fP افزودن یک قانون به فهرست دستگاه‌های مجاز cgroup .SS \fB--device-read-bps\fP=\fIpath:rate\fP محدود کردن نرخ خواندن (بایت در ثانیه) از یک دستگاه .SS \fB--device-read-iops\fP=\fIpath:rate\fP محدود کردن نرخ خواندن (ورودی/خروجی در ثانیه) از یک دستگاه .SS \fB--device-write-bps\fP=\fIpath:rate\fP محدود کردن نرخ نوشتن (بایت در ثانیه) روی یک دستگاه .SS \fB--device-write-iops\fP=\fIpath:rate\fP محدود کردن نرخ نوشتن (ورودی/خروجی در ثانیه) روی یک دستگاه .SS \fB--disable-content-trust\fP .PP این یک گزینه مخصوص داکر برای غیرفعال کردن اعتبارسنجی تصویر در یک رجیستری کانتینر است و توسط Podman پشتیبانی نمی‌شود. این فلگ یک دستور بی‌اثر (NOOP) است و صرفاً برای سازگاری اسکریپت‌ها ارائه شده است. .SS \fB--dns\fP=\fIipaddr\fP تنظیم کارسازهای DNS سفارشی .SS \fB--dns-option\fP=\fIoption\fP تنظیم گزینه‌های DNS .SS \fB--dns-search\fP=\fIdomain\fP تنظیم دامنه‌های جستجوی DNS سفارشی .SS \fB--entrypoint\fP=\fI"command"\fP | \fI\&'["command", "arg1", ...]'\fP بازنویسی ENTRYPOINT پیش‌فرض ایمیج .PP \fB-e\fP, \fB--env\fP= تنظیم متغیرهای محیطی .SS \fB--env\fP, \fB-e\fP=\fIenv\fP .PP افزودن یک مقدار (برای نمونه env=\fIvalue\fP) به تصویر ساخته‌شده. این گزینه می‌تواند چندین بار استفاده شود. اگر نه \fB=\fR و نه یک \fB*value*\fR تعیین نشده باشد، اما \fIenv\fP در محیط فعلی تنظیم شده باشد، مقدار از محیط فعلی به تصویر اضافه خواهد شد. مقدار \fIenv\fP می‌تواند توسط دستورالعمل‌های ENV در Containerfile بازنویسی شود. برای حذف یک متغیر محیطی از تصویر ساخته‌شده، از گزینه \fB--unsetenv\fR استفاده کنید. .SS \fB--env-file\fP=\fIfile\fP خواندن فایلی از متغیرهای محیطی .SS \fB--env-host\fP .PP استفاده از تمام متغیرهای محیطی سیستم میزبان درون کانتینر. .SS \fB--env-merge\fP=\fIenv\fP .PP ادغام متغیرهای محیطی مشخص‌شده با متغیرهای محیطی موجود در تصویر کانتینر. .SS \fB--expose\fP=\fIport[/protocol]\fP در دسترس قرار دادن (expose) یک درگاه یا محدوده‌ای از درگاه‌ها .SS \fB--gidmap\fP=\fI[flags]container_gid:from_gid[:amount]\fP .PP نگاشت شناسه‌های گروه کاربری (GID) میزبان به کانتینر در حالت بدون ریشه (rootless). .SS \fB--gpus\fP=\fIENTRY\fP دستگاه‌های پردازنده گرافیکی (GPU) جهت افزودن به کانتینر ('all' برای ارسال همه GPUها) .SS \fB--group-add\fP=\fIgroup\fP | \fIkeep-groups\fP افزودن گروه‌های اضافی جهت عضویت .SS \fB--group-entry\fP=\fIENTRY\fP .PP ورودی سفارشی برای فایل /etc/group درون کانتینر. .SS \fB--health-cmd\fP=\fI"command"\fP | \fI\&'["command", "arg1", ...]'\fP دستور جهت اجرا برای بررسی وضعیت سلامت .SS \fB--health-interval\fP=\fIinterval\fP فاصله زمانی بین اجرای بررسی (ms|s|m|h) (پیش‌فرض 0s) .SS \fB--health-log-destination\fP=\fIdirectory_path\fP .PP مقصد لاگ‌های بررسی سلامت کانتینر (مانند directory، local، none). .SS \fB--health-max-log-count\fP=\fInumber of stored logs\fP .PP حداکثر تعداد رکوردهای لاگ بررسی سلامت که در حافظه ذخیره می‌شوند. .SS \fB--health-max-log-size\fP=\fIsize of stored logs\fP .PP حداکثر اندازه فایل لاگ بررسی سلامت بر حسب بایت. .SS \fB--health-on-failure\fP=\fIaction\fP .PP عملیاتی که در صورت ناموفق بودن بررسی سلامت انجام می‌شود (مانند none، kill، restart، stop). .SS \fB--health-retries\fP=\fIretries\fP تعداد شکست‌های پیاپی لازم برای گزارش ناسالم بودن .SS \fB--health-start-period\fP=\fIperiod\fP دوره راه‌اندازی کانتینر برای مقداردهی اولیه قبل از آغاز شمارش معکوس health-retries بر حسب (ms|s|m|h) (پیش‌فرض 0s) .SS \fB--health-startup-cmd\fP=\fI"command"\fP | \fI\&'["command", "arg1", ...]'\fP .PP دستور بررسی سلامت در زمان راه‌اندازی کانتینر. .SS \fB--health-startup-interval\fP=\fIinterval\fP .PP فاصله زمانی بین بررسی‌های سلامت هنگام راه‌اندازی کانتینر. .SS \fB--health-startup-retries\fP=\fIretries\fP .PP تعداد تلاش‌های مجدد بررسی سلامت هنگام راه‌اندازی پیش از اعلام شکست. .SS \fB--health-startup-success\fP=\fIretries\fP .PP تعداد دفعات موفقیت متوالی لازم برای گذر از فاز راه‌اندازی سلامت. .SS \fB--health-startup-timeout\fP=\fItimeout\fP .PP حداکثر زمان انتظار برای تکمیل دستور بررسی سلامت در فاز راه‌اندازی. .SS \fB--health-timeout\fP=\fItimeout\fP حداکثر زمان مجاز برای اجرای یک بررسی (ms|s|m|h) (پیش‌فرض 0s) .SS \fB--help\fP چاپ نحوه استفاده .PP \fB-h\fP, \fB--hostname\fP="" نام میزبان کانتینر .SS \fB--hostname\fP, \fB-h\fP=\fIname\fP .PP تنظیم نام میزبان (hostname) سفارشی برای کانتینر. .SS \fB--hosts-file\fP=\fIpath\fP | \fInone\fP | \fIimage\fP .PP مسیر فایل سفارشی /etc/hosts برای سوار کردن درون کانتینر. .SS \fB--hostuser\fP=\fIname\fP .PP نام کاربری روی میزبان که کانتینر به نمایندگی از آن اجرا می‌شود. .SS \fB--http-proxy\fP .PP به‌طور پیش‌فرض، در صورتی که متغیرهای محیطی پیشکار (proxy) برای فرایند Podman تنظیم شده باشند، به درون کانتینر منتقل می‌شوند\&. این رفتار را می‌توان با تنظیم گزینه \fB--http-proxy\fR روی \fBfalse\fR غیرفعال کرد\&. متغیرهای محیطی منتقل‌شده شامل \fBhttp_proxy\fR، \fBhttps_proxy\fR، \fBftp_proxy\fR، \fBno_proxy\fR و همچنین نگارش‌های با حروف بزرگ آن‌ها هستند\&. .PP پیش‌فرض \fBtrue\fR است\&. .SS \fB--image-volume\fP=\fBbind\fP | \fItmpfs\fP | \fIignore\fP .PP نحوه مدیریت حجم‌های تعریف‌شده در ایمیج (bind، tmpfs یا ignore). .SS \fB--init\fP اجرای یک فرایند init درون کانتینر جهت هدایت سیگنال‌ها و جمع‌آوری فرایندهای زامبی .PP \fB-i\fP, \fB--interactive\fP[=false] باز نگه داشتن STDIN حتی اگر متصل نباشد .SS \fB--init-ctr\fP=\fItype\fP .PP تعیین نوع کانتینر به عنوان یک کانتینر اولیه (init container) برای یک پاد. .SS \fB--init-path\fP=\fIpath\fP .PP مسیر باینری اجرایی پردازش init کانتینر. .SS \fB--interactive\fP, \fB-i\fP .PP باز نگه داشتن ورودی استاندارد (stdin) حتی اگر کانتینر به ترمینال متصل نباشد. .SS \fB--ip\fP=\fIIPv4\fP آدرس IPv4 (مانند 172.30.100.104) .SS \fB--ip6\fP=\fIIPv6\fP آدرس IPv6 (مانند 2001:db8::33) .SS \fB--ipc\fP=\fIipc\fP حالت IPC مورد استفاده .SS \fB--label\fP, \fB-l\fP=\fIkey=value\fP .PP افزودن یک برچسب تصویر \fIlabel\fP (برای نمونه label=\fIvalue\fP) به متاداده تصویر. این گزینه می‌تواند چندین بار استفاده شود. اگر نام \fIlabel\fP ذکر شود، اما نه \fB=\fR و نه یک \fBvalue\fR ارائه نشود، آنگاه \fIlabel\fP روی یک مقدار خالی تنظیم می‌شود. .PP کاربران می‌توانند یک LABEL ویژه به صورت \fBio.containers.capabilities=CAP1,CAP2,CAP3\fP در یک Containerfile تنظیم کنند که فهرست قابلیت‌های (capabilities) لینوکس مورد نیاز برای اجرای درست کانتینر را مشخص می‌کند. این برچسب تعیین‌شده در تصویر کانتینر به موتورهای کانتینر، مانند Podman، که این برچسب را می‌شناسند می‌گوید تا کانتینر را فقط با همین قابلیت‌ها اجرا کنند. موتور کانتینر کانتینر را فقط با قابلیت‌های مشخص‌شده راه‌اندازی می‌کند، تا زمانی که این فهرست از قابلیت‌ها زیرمجموعه‌ای از فهرست پیش‌فرض باشد. .PP اگر قابلیت‌های مشخص‌شده در مجموعه پیش‌فرض نباشند، موتورهای کانتینر باید یک پیام خطا چاپ کنند و کانتینر را با قابلیت‌های پیش‌فرض اجرا خواهند کرد. .SS \fB--label-file\fP=\fIfile\fP خواندن فایلی از برچسب‌ها که با خط جدا شده‌اند .SS \fB--link-local-ip\fP=\fIip\fP آدرس‌های پیوند-محلی (link-local) مربوط به IPv4/IPv6 کانتینر .SS \fB--log-driver\fP=\fIdriver\fP راه‌انداز ثبت وقایع (log driver) برای کانتینر .SS \fB--log-opt\fP=\fIname=value\fP گزینه‌های راه‌انداز ثبت وقایع .SS \fB--mac-address\fP=\fIaddress\fP آدرس MAC کانتینر (مانند 92:d0:c6:0a:29:33) .PP \fB-m\fP, \fB--memory\fP=0 محدودیت حافظه .SS \fB--memory\fP, \fB-m\fP=\fInumber[unit]\fP .PP محدودیت حافظه (قالب: []، که در آن واحد می‌تواند b، k، m یا g باشد) .PP به شما امکان می‌دهد حافظه در دسترس کانتینر را محدود کنید\&. اگر میزبان از حافظه swap پشتیبانی کند، تنظیم حافظه \fB-m\fP می‌تواند بزرگ‌تر از رم (RAM) فیزیکی باشد\&. اگر محدودیت 0 مشخص شود (عدم استفاده از \fB-m\fP)، حافظه کانتینر محدود نمی‌شود\&. محدودیت واقعی ممکن است به ضریبی از اندازه صفحه سیستم‌عامل گرد شود (این مقدار بسیار بزرگ خواهد بود، یعنی میلیون‌ها تریلیون)\&. .SS \fB--memory-reservation\fP=\fInumber[unit]\fP محدودیت نرم حافظه .SS \fB--memory-swap\fP=\fInumber[unit]\fP حد حافظه مبادله‌ای (swap) برابر با مجموع حافظه به‌علاوه swap؛ مقدار '-1' برای فعال کردن swap نامحدود .SS \fB--memory-swappiness\fP=\fInumber\fP تنظیم میزان مبادله حافظه کانتینر (swappiness) از 0 تا 100 .SS \fB--mount\fP=\fItype=TYPE,TYPE-SPECIFIC-OPTION[,...]\fP اتصال یک فایل‌سیستم به کانتینر .SS \fB--name\fP=\fIname\fP اختصاص یک نام به کانتینر .SS \fB--network\fP=\fImode\fP, \fB--net\fP اتصال یک کانتینر به یک شبکه .SS \fB--network-alias\fP=\fIalias\fP افزودن نام مستعار در سطح شبکه برای کانتینر .SS \fB--no-healthcheck\fP غیرفعال کردن هرگونه HEALTHCHECK تعیین‌شده توسط کانتینر .SS \fB--no-hostname\fP .PP فایل \fI/etc/hostname\fP را در کانتینر برای دستورالعمل‌های RUN ایجاد نمی‌کند. .PP به طور پیش‌فرض، Podman فایل \fI/etc/hostname\fP را مدیریت کرده و نام میزبان کانتینر را اضافه می‌کند. هنگامی که گزینه \fB--no-hostname\fP تنظیم شود، فایل \fI/etc/hostname\fP ایمیج (در صورت وجود) بدون تغییر حفظ خواهد شد. .SS \fB--no-hosts\fP .PP فایل \fI/etc/hosts\fP را در کانتینر برای دستورالعمل‌های RUN ایجاد نمی‌کند. .PP به طور پیش‌فرض، Podman فایل \fI/etc/hosts\fP را مدیریت کرده و آدرس IP خود کانتینر را اضافه می‌کند. گزینه \fB--no-hosts\fP این مورد را غیرفعال می‌کند و فایل \fI/etc/hosts\fP ایمیج بدون تغییر حفظ خواهد شد. با گزینه \fB--add-host\fP تداخل دارد. .SS \fB--oom-kill-disable\fP غیرفعال کردن کشنده کمبود حافظه (OOM Killer) .SS \fB--oom-score-adj\fP=\fInum\fP تنظیم اولویت‌های OOM میزبان (از -1000 تا 1000) .SS \fB--os\fP=\fIOS\fP .PP تنظیم سیستم‌عامل تصویری که باید واکشی شود روی مقدار ارائه‌شده، به جای استفاده از سیستم‌عامل کنونی میزبان\&. .SS \fB--passwd-entry\fP=\fIENTRY\fP .PP ورودی سفارشی برای فایل /etc/passwd درون کانتینر. .SS \fB--personality\fP=\fIpersona\fP .PP تنظیم دامنه اجرای فراخوانی‌های سیستمی لینوکس (Linux Personality). .SS \fB--pid\fP=\fImode\fP فضای نام PID مورد استفاده .SS \fB--pidfile\fP=\fIpath\fP .PP نوشتن شناسه فرآیند (PID) کانتینر درون فایل مشخص‌شده. .SS \fB--pids-limit\fP=\fIlimit\fP تنظیم محدودیت تعداد شناسه‌های فرایند (pids) کانتینر (مقدار -1 برای نامحدود) .SS \fB--platform\fP=\fIOS/ARCH\fP تنظیم پلتفرم در صورتی که کارساز قابلیت چندپلتفرمی داشته باشد .SS \fB--pod\fP=\fIname\fP .PP اجرای کانتینر درون یک پاد موجود یا ایجاد پاد جدید با پیشوند new:. .SS \fB--pod-id-file\fP=\fIfile\fP .PP خواندن یا نوشتن شناسه پاد از یا به یک فایل. .SS \fB--privileged\fP اعطای دسترسی‌های گسترده به این کانتینر .PP \fB-p\fP, \fB--publish\fP= انتشار درگاه(های) کانتینر روی میزبان .PP \fB-P\fP, \fB--publish-all\fP[=false] انتشار تمامی درگاه‌های در دسترس به درگاه‌های تصادفی .SS \fB--publish\fP, \fB-p\fP=\fI[[hostIP:][hostPort]:]containerPort[/protocol]\fP .PP انتشار یک پورت کانتینر یا دامنه‌ای از پورت‌ها به پورت‌های میزبان. .SS \fB--publish-all\fP, \fB-P\fP .PP انتشار خودکار تمامی پورت‌های تعریف‌شده در ایمیج به پورت‌های تصادفی میزبان. .SS \fB--pull\fP=\fIpolicy\fP دریافت ایمیج پیش از ایجاد ("always"، "missing"، "never") .PP \fB-q\fP, \fB--quiet\fP[=false] بی‌صدا کردن خروجی دریافت ایمیج .SS \fB--quiet\fP, \fB-q\fP .PP در صورتی که نیاز به دریافت تصویر از مخزن باشد، از نمایش روند پیشرفت جلوگیری می‌کند. .SS \fB--rdt-class\fP=\fIintel-rdt-class-of-service\fP .PP کلاس فناوری توزیع منابع اینتل (Intel RDT) برای اختصاص پهنای باند و حافظه کش. .SS \fB--read-only\fP سوار کردن فایل‌سیستم ریشه کانتینر به‌صورت فقط‌خواندنی .SS \fB--read-only-tmpfs\fP .PP سوار کردن سیستم‌فایل موقت tmpfs روی /tmp و /var/tmp در حالت فقط‌خواندنی. .SS \fB--replace\fP .PP در صورت وجود کانتینری با همین نام، به صورت خودکار آن را متوقف و جایگزین کند. .SS \fB--requires\fP=\fIcontainer\fP .PP تعیین کانتینرهای پیش‌نیاز که پیش از این کانتینر باید ایجاد و اجرا شوند. .SS \fB--restart\fP=\fIpolicy\fP سیاست راه‌اندازی مجدد هنگام خروج کانتینر .SS \fB--retry\fP=\fIattempts\fP .PP تعداد دفعات تلاش مجدد در صورت بروز خطا هنگام دریافت تصاویر از مخزن. .PP مقدار پیش‌فرض \fB3\fR\& است. .SS \fB--retry-delay\fP=\fIduration\fP .PP مدت‌زمان تاخیر بین تلاش‌های مجدد در صورت بروز خطا هنگام دریافت تصاویر از مخزن. .PP مقدار پیش‌فرض \fB2s\fR\& است. .SS \fB--rm\fP حذف خودکار کانتینر و حجم‌های ناشناس وابسته به آن پس از خروج .SS \fB--rootfs\fP .PP استفاده از یک دایرکتوری سیستم‌فایل ریشه به جای ایمیج کانتینر. .SS \fB--sdnotify\fP=\fBcontainer\fP | \fIconmon\fP | \fIhealthy\fP | \fIignore\fP .PP تعیین حالت ارسال اعلان‌های systemd sd_notify (مانند container، conmon یا ignore). .SS \fB--seccomp-policy\fP=\fIpolicy\fP .PP خط‌مشی بارگذاری پروفایل seccomp (مانند default یا image). .SS \fB--secret\fP=\fIsecret[,opt=opt ...]\fP .PP ارسال اطلاعات محرمانه (سکرت / secret) برای استفاده در Containerfile جهت ساخت ایمیج‌ها به روشی امن که در نهایت در ایمیج نهایی ذخیره نشود یا در مراحل دیگر دیده نشود. مقدار سکرت از یک متغیر محیطی یا پرونده با نام ارائه‌شده توسط گزینه "id"، یا با نام تعیین‌شده توسط گزینه "src" (در صورت مشخص شدن)، یا از یک متغیر محیطی مشخص‌شده با گزینه "env" خوانده می‌شود. اطلاعات محرمانه (سکرت) به‌طور پیش‌فرض در مسیر \fB/run/secrets/\fR در کانتینر متصل (mount) خواهد شد. .PP برای استفاده از سکرت در ادامه، از فلگ --mount در دستورالعمل \fBRUN\fR در داخل یک \fBContainerfile\fR استفاده کنید: .PP \fBRUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret\fR .PP محل قرارگیری سکرت در کانتینر را می‌توان با استفاده از گزینه‌های "target"، "dst" یا "destination" از فلگ \fBRUN --mount\fR بازنویسی کرد. .PP \fBRUN --mount=type=secret,id=mysecret,target=/run/secrets/myothersecret cat /run/secrets/myothersecret\fR .PP همچنین سکرت را می‌توان به‌صورت متغیر محیطی در اختیار فرایند قرار داد: .PP \fBRUN --mount=type=secret,id=mysecret,env=FOO sh -c 'echo "Hello $FOO"'\fR .PP نکته: تغییر محتوای پرونده‌های سکرت، موجب بازسازی مجدد لایه‌هایی که از سکرت‌های مذکور استفاده می‌کنند نخواهد شد. .SS \fB--security-opt\fP=\fIoption\fP گزینه‌های امنیتی .SS \fB--shm-size\fP=\fInumber[unit]\fP اندازه مسیر /dev/shm .SS \fB--shm-size-systemd\fP=\fInumber[unit]\fP .PP اندازه سیستم‌فایل موقت /dev/shm در زمان فعال بودن حالت systemd. .SS \fB--stop-signal\fP=\fIsignal\fP سیگنال متوقف کردن کانتینر .SS \fB--stop-timeout\fP=\fIseconds\fP مهلت زمانی (بر حسب ثانیه) برای متوقف کردن کانتینر .SS \fB--subgidname\fP=\fIname\fP .PP نام کاربری در /etc/subgid برای تخصیص شناسه‌های گروه کاربری در حالت بدون ریشه. .SS \fB--subuidname\fP=\fIname\fP .PP نام کاربری در /etc/subuid برای تخصیص شناسه‌های کاربری در حالت بدون ریشه. .SS \fB--sysctl\fP=\fIname=value\fP گزینه‌های sysctl .SS \fB--systemd\fP=\fItrue\fP | \fIfalse\fP | \fIalways\fP .PP اجرای کانتینر در حالت سازگار با systemd (مانند true، false یا always). .SS \fB--timeout\fP=\fIseconds\fP .PP حداکثر زمان مجاز اجرای کانتینر پیش از ارسال سیگنال خاتمه به ثانیه. .SS \fB--tls-verify\fP .PP الزام استفاده از HTTPS و اعتبارسنجی گواهی‌ها هنگام برقراری ارتباط با مخازن کانتینر (پیش‌فرض true است). هنگام برقراری ارتباط با یک مخزن ناامن نمی‌توان از اعتبارسنجی TLS استفاده کرد. .SS \fB--tmpfs\fP=\fIfs\fP سوار کردن یک دایرکتوری tmpfs .PP \fB-t\fP, \fB--tty\fP[=false] تخصیص یک شبه-TTY .SS \fB--tty\fP, \fB-t\fP .PP تخصیص یک شبه‌ترمینال (pseudo-TTY) به کانتینر. .SS \fB--tz\fP=\fItimezone\fP .PP تنظیم منطقه زمانی (Timezone) محلی درون کانتینر. .SS \fB--uidmap\fP=\fI[flags]container_uid:from_uid[:amount]\fP .PP نگاشت شناسه‌های کاربری (UID) سیستم میزبان به کانتینر در حالت بدون ریشه. .SS \fB--ulimit\fP=\fIoption\fP گزینه‌های ulimit .SS \fB--umask\fP=\fIumask\fP .PP تنظیم ماسک دسترسی ایجاد فایل (umask) درون کانتینر. .SS \fB--unsetenv\fP=\fIenv\fP .PP حذف متغیرهای محیطی از تصویر نهایی. .SS \fB--unsetenv-all\fP .PP پاکسازی تمامی متغیرهای محیطی به ارث رسیده از ایمیج پایه. .SS \fB--user\fP, \fB-u\fP=\fIuser[:group]\fP .PP تعیین نام کاربری یا شناسه کاربری (UID/GID) برای اجرای فرآیند کانتینر. .SS \fB--userns\fP=\fImode\fP فضای نام کاربر مورد استفاده .SS \fB--uts\fP=\fImode\fP فضای نام UTS مورد استفاده .PP \fB-v\fP, \fB--volume\fP= سوار کردن یک حجم به‌صورت bind mount .SS \fB--variant\fP=\fIVARIANT\fP .PP گونه (variant) معماری تصویری که باید دریافت شود را تنظیم می‌کند. .SS \fB--volume\fP, \fB-v\fP=\fI[[SOURCE-VOLUME|HOST-DIR:]CONTAINER-DIR[:OPTIONS]]\fP .PP ایجاد یک اتصال پیوندی (bind mount). اگر مشخص کنید \fB-v /HOST-DIR:/CONTAINER-DIR\fR، ابزار Podman مسیر \fB/HOST-DIR\fR در میزبان را به \fB/CONTAINER-DIR\fR درون کانتینر Podman پیوند می‌زند. مقادیر \fBOPTIONS\fR فهرستی جداشده با کاما هستند و می‌توانند شامل موارد زیر باشند: .RS .IP \(bu 2 [rw|ro] .IP \(bu 2 [U] .IP \(bu 2 [z|Z|O] .IP \(bu 2 [\fB[r]shared\fR|\fB[r]slave\fR|\fB[r]private\fR|\fB[r]unbindable\fR] [1] \[la]#Footnote1\[ra] .RE .PP مسیر \fBCONTAINER-DIR\fR باید یک مسیر مطلق مانند \fB/src/docs\fR\& باشد. مسیر \fBHOST-DIR\fR نیز باید یک مسیر مطلق باشد. Podman مسیر \fBHOST-DIR\fR را به مسیری که مشخص می‌کنید bind-mount می‌کند. برای نمونه، اگر \fB/foo\fR را به‌عنوان مسیر میزبان بدهید، Podman محتویات \fB/foo\fR را در سیستم‌فایل کانتینر روی میزبان کپی کرده و آن را به درون کانتینر bind-mount می‌کند. .PP می‌توانید چندین گزینه \fB-v\fP را برای سوار کردن یک یا چند اتصال به یک کانتینر مشخص کنید. .PP \fBاتصال‌های جلد حفاظت‌شده در برابر نوشتن (Write Protected Volume Mounts)\fR .PP می‌توانید پسوند \fB:ro\fR یا \fB:rw\fR را به یک جلد اضافه کنید تا به ترتیب در حالت فقط‌خواندنی یا خواندنی-نوشتنی متصل شود. به‌طور پیش‌فرض، جلدها به‌صورت خواندنی-نوشتنی سوار می‌شوند. مثال‌ها را ببینید. .PP \fBتغییر مالکیت اتصال‌های جلد (Chowning Volume Mounts)\fR .PP به‌طور پیش‌فرض، Podman مالک و گروه دایرکتوری‌های جلد منبع متصل‌شده به کانتینرها را تغییر نمی‌دهد. اگر کانتینری در یک فضای‌نام کاربری (user namespace) جدید ایجاد شود، UID و GID درون کانتینر ممکن است با UID و GID متفاوتی روی میزبان متناظر باشند. .PP پسوند \fB:U\fR به Podman اعلام می‌کند تا بر پایه UID و GID درون کانتینر، از UID و GID درست میزبان استفاده کرده و مالک و گروه جلد منبع را تغییر دهد. .PP \fBبرچسب‌گذاری اتصال‌های جلد (Labeling Volume Mounts)\fR .PP سامانه‌های برچسب‌گذاری مانند SELinux نیازمند قرارگیری برچسب‌های مناسب روی محتوای جلد متصل‌شده به کانتینر هستند. بدون برچسب، سامانه امنیتی ممکن است از استفاده فرایندهای در حال اجرا درون کانتینر از محتوا جلوگیری کند. به‌طور پیش‌فرض، Podman برچسب‌های تنظیم‌شده توسط سیستم‌عامل را تغییر نمی‌دهد. .PP برای تغییر یک برچسب در بستر کانتینر، می‌توانید یکی از دو پسوند \fB:z\fR یا \fB:Z\fR را به اتصال جلد اضافه کنید. این پسوندها به Podman می‌گویند که اشیای فایل روی جلدهای اشتراکی را دوباره برچسب‌گذاری کند. گزینه \fBz\fR به Podman می‌گوید که دو کانتینر محتوای جلد را به اشتراک می‌گذارند. در نتیجه، Podman محتوا را با یک برچسب محتوای مشترک برچسب‌گذاری می‌کند. برچسب‌های جلد مشترک به همه کانتینرها اجازه خواندن/نوشتن محتوا را می‌دهند. گزینه \fBZ\fR به Podman می‌گوید که محتوا را با یک برچسب خصوصی غیرمشترک برچسب‌گذاری کند. تنها کانتینر فعلی می‌تواند از یک جلد خصوصی استفاده کند. .PP \fBاتصال‌های جلد اورلی (Overlay Volume Mounts)\fR .PP پرچم \fB:O\fR به Podman اعلام می‌کند دایرکتوری را از میزبان با استفاده از سیستم‌فایل Overlay به‌عنوان یک فضای ذخیره‌سازی موقت سوار کند. کانتینرهای دستور \fBRUN\fR مجاز هستند محتویات درون نقطه اتصال را تغییر دهند و این تغییرات در فضای ذخیره‌سازی کانتینر در یک دایرکتوری جداگانه ذخیره می‌شوند. در اصطلاحات سامانه فایل Overlay، دایرکتوری منبع lower و دایرکتوری ذخیره‌سازی کانتینر upper خواهد بود. اصلاحات انجام‌شده در نقطه اتصال هنگام پایان اجرای دستور \fBRUN\fR از بین می‌روند، شبیه به یک نقطه اتصال tmpfs. .PP هر اجرای بعدی دستورهای \fBRUN\fR محتوای دایرکتوری منبع اصلی را می‌بیند؛ و هر تغییری از دستورات RUN قبلی دیگر وجود نخواهد داشت. .PP یک مورد استفاده از اتصال \fBoverlay\fR، به اشتراک گذاشتن حافظه نهان بسته‌ها (package cache) از میزبان به درون کانتینر برای افزایش سرعت ساخت است. .PP نکته: .RS .IP \(bu 2 پرچم \fBO\fR مجاز نیست همراه با پرچم‌های \fBZ\fR یا \fBz\fR مشخص شود. محتوای متصل‌شده به درون کانتینر با برچسب خصوصی برچسب‌گذاری می‌شود. در سامانه‌های SELinux، برچسب‌های موجود در دایرکتوری منبع باید برای برچسب کانتینر قابل‌خواندن باشند. در غیر این صورت، تفکیک کانتینر SELinux باید غیرفعال شود تا کانتینر کار کند. .IP \(bu 2 تغییر دایرکتوری جلدی که با یک اتصال overlay به درون کانتینر متصل شده است می‌تواند خطاهای غیرمنتظره به وجود آورد. توصیه می‌شود تا پایان اجرای کانتینر این دایرکتوری را تغییر ندهید. .RE .PP به‌طور پیش‌فرض جلدهای bind-mount شده \fBprivate\fR\& هستند. بدین معنا که هرگونه اتصالی که درون کانتینر انجام شود روی میزبان قابل مشاهده نخواهد بود و برعکس. این رفتار را می‌توان با مشخص کردن ویژگی انتشار اتصال جلد تغییر داد. .PP هنگامی که خط‌مشی انتشار اتصال روی \fBshared\fR تنظیم شود، هرگونه اتصال انجام‌شده درون کانتینر روی آن جلد هم برای میزبان و هم کانتینر قابل مشاهده خواهد بود. هنگامی که خط‌مشی انتشار اتصال روی \fBslave\fR تنظیم شود، انتشار یک‌طرفه اتصال فعال شده و هرگونه اتصال انجام‌شده روی میزبان برای آن جلد تنها در داخل کانتینر قابل مشاهده خواهد بود. برای کنترل ویژگی انتشار اتصال جلد، از پرچم‌های انتشار \fB:[r]shared\fR، \fB:[r]slave\fR، \fB[r]private\fR یا \fB[r]unbindable\fR استفاده کنید. ویژگی انتشار را فقط می‌توان برای جلدهای bind-mount شده تعیین کرد و نه جلدهای داخلی یا جلدهای نام‌گذاری‌شده. برای کارکرد انتشار اتصال روی نقطه اتصال منبع (نقطه اتصالی که دایرکتوری منبع روی آن سوار شده است)، باید ویژگی‌های انتشار مناسب را داشته باشد. برای جلدهای shared، نقطه اتصال منبع باید shared باشد. و برای جلدهای slave، اتصال منبع باید shared یا slave باشد. [1] \[la]#Footnote1\[ra] .PP از دستور \fBdf \fR برای تعیین اتصال منبع و سپس از دستور \fBfindmnt -o TARGET,PROPAGATION \fR برای تعیین ویژگی‌های انتشار اتصال منبع استفاده کنید؛ اگر ابزار \fBfindmnt\fR در دسترس نیست، نقطه اتصال منبع را می‌توان با بررسی مدخل mount در فایل \fB/proc/self/mountinfo\fR\& مشخص کرد. \fBoptional fields\fR را بررسی کنید و ببینید آیا ویژگی انتشاری مشخص شده است یا خیر. \fBshared:X\fR به معنای \fBshared\fR بودن اتصال است، \fBmaster:X\fR به معنای \fBslave\fR بودن اتصال است و اگر چیزی وجود نداشته باشد به این معناست که اتصال \fBprivate\fR\& است. [1] \[la]#Footnote1\[ra] .PP برای تغییر ویژگی‌های انتشار یک نقطه اتصال از دستور \fBmount\fR استفاده کنید. برای نمونه، برای bind-mount کردن دایرکتوری منبع \fB/foo\fR دستورهای \fBmount --bind /foo /foo\fR و \fBmount --make-private --make-shared /foo\fR\& را اجرا کنید. این کار /foo را به یک نقطه اتصال \fBshared\fR تبدیل می‌کند. ویژگی‌های انتشار نقطه اتصال منبع را می‌توان مستقیماً تغییر داد. برای نمونه اگر \fB/\fR نقطه اتصال منبع برای \fB/foo\fR باشد، دستور \fBmount --make-shared /\fR را برای تبدیل \fB/\fR به یک اتصال \fBshared\fR به کار ببرید. .SH "مثال (EXAMPLE)" .PP podman from --pull imagename .PP podman from --pull podman://myregistry.example.com/imagename .PP podman from podman-daemon:imagename:imagetag .PP podman from --name mycontainer podman-archive:filename .PP podman from oci-archive:filename .PP podman from --name mycontainer dir:directoryname .PP podman from --pull-always --name "mycontainer" myregistry.example.com/imagename .PP podman from --tls-verify=false myregistry/myrepository/imagename:imagetag .PP podman from --creds=myusername:mypassword --cert-dir ~/auth myregistry/myrepository/imagename:imagetag .PP podman from --authfile=/tmp/auths/myauths.json myregistry/myrepository/imagename:imagetag .PP podman from --memory 40m --cpu-shares 2 --cpuset-cpus 0,2 --security-opt label=level:s0:c100,c200 myregistry/myrepository/imagename:imagetag .PP podman from --ulimit nofile=1024:1028 --cgroup-parent /path/to/cgroup/parent myregistry/myrepository/imagename:imagetag .PP podman from --volume /home/test:/myvol:ro,Z myregistry/myrepository/imagename:imagetag .PP podman from -v /home/test:/myvol:z,U myregistry/myrepository/imagename:imagetag .PP podman from -v /var/lib/yum:/var/lib/yum:O myregistry/myrepository/imagename:imagetag .PP podman from --arch=arm --variant v7 myregistry/myrepository/imagename:imagetag .SH "متغیرهای محیطی (ENVIRONMENT)" .PP \fBBUILD_REGISTRY_SOURCES\fP .PP متغیر BUILD_REGISTRY_SOURCES در صورت مقداردهی، به عنوان یک شیء JSON در نظر گرفته می‌شود که شامل فهرست‌هایی از نام‌های رجیستری ذیل کلیدهای \fBinsecureRegistries\fR، \fBblockedRegistries\fR و \fBallowedRegistries\fR\& است. .PP هنگام دریافت (pull) تصویر از یک رجیستری، اگر نام رجیستری با هر یک از موارد موجود در فهرست \fBblockedRegistries\fR مطابقت داشته باشد، تلاش برای دریافت تصویر رد می‌شود. اگر در فهرست \fBallowedRegistries\fR رجیستری‌هایی وجود داشته باشند و نام رجیستری در فهرست نباشد، تلاش برای دریافت رد می‌شود. .PP \fBTMPDIR\fP متغیر محیطی TMPDIR به کاربر امکان می‌دهد محل ذخیره پرونده‌های موقت را هنگام دریافت و ارسال (pull و push) تصاویر مشخص کند. مقدار پیش‌فرض '/var/tmp' است. .SH "پرونده‌ها (FILES)" .PP \fBregistries.conf\fP (\fB/etc/containers/registries.conf\fR) .PP پرونده registries.conf پرونده پیکربندی است که مشخص می‌کند هنگام تکمیل نام‌های تصاویری که فاقد بخش رجیستری یا دامنه هستند، باید به کدام رجیستری‌های کانتینر مراجعه شود. .PP \fBpolicy.json\fP (\fB/etc/containers/policy.json\fR) .PP پرونده سیاست امضا. این پرونده سیاست اعتماد را برای تصاویر کانتینر تعریف می‌کند. تعیین می‌کند کدام رجیستری‌های کانتینر می‌توانند برای تصاویر استفاده شوند و این‌که آیا ابزار باید به تصاویر اعتماد کند یا خیر. .SH "همچنین ببینید (SEE ALSO)" .PP podman(1), podman-pull(1), podman-login(1), podman-login(1), namespaces(7), pid_namespaces(7), containers-policy.json(5), containers-registries.conf(5), user_namespaces(7), containers.conf(5), containers-auth.json(5) .SH "پانویس‌ها (FOOTNOTES)" .PP ۱: پروژه Podman به فراگیری، از ارزش‌های بنیادین متن‌باز، متعهد است. اصطلاحات انتشار سوارکردن (mount propagation) شامل \fBmaster\fR و \fBslave\fR که در این‌جا استفاده شده، مشکل‌ساز و تفرقه‌افکن است و باید دگرگون شود. با این حال، این اصطلاحات هم‌اکنون درون هسته لینوکس استفاده می‌شوند و در این مقطع زمانی باید به همان صورت به کار روند. هنگامی که نگه‌دارندگان هسته این کاربرد را اصلاح کنند، Podman بی‌درنگ از آن پیروی خواهد کرد. .SS \fB--volumes-from\fP=\fICONTAINER[:OPTIONS]\fP سوار کردن حجم‌ها از کانتینر(های) مشخص‌شده .PP \fB-w\fP, \fB--workdir\fP="" دایرکتوری کاری درون کانتینر .SH "ببینید (SEE ALSO)" \fBpodman(1)\fP .SS \fB--workdir\fP, \fB-w\fP=\fIdir\fP .PP تعیین دایرکتوری کاری درون کانتینر هنگام اجرا. .SH "مثال‌ها (EXAMPLES)" .PP ایجاد یک کانتینر جدید با استفاده از ایمیج fedora: .EX $ podman create -it fedora bash 6d353a48c72447cc7d0799e8334460598a3c8e9b81561726ca21c385b0d0e653 .EE .PP ایجاد یک کانتینر با نام مشخص: .EX $ podman create --name my-container fedora .EE .SH "وضعیت خروج (EXIT STATUS)" کد خروج صفر نشان‌دهنده موفقیت کامل عملیات ایجاد کانتینر است. کدهای غیرصفر نشان‌دهنده خطای پیکربندی، عدم دسترسی یا عدم وجود ایمیج مشخص‌شده هستند. .SH "همچنین ببینید (SEE ALSO)" \fBpodman(1)\fP, \fBpodman-run(1)\fP, \fBpodman-start(1)\fP .SH "تاریخچه (HISTORY)" پاییز ۲۰۱۷، در ابتدا توسط Urvashi Mohnani کامپایل شد.