| podman-create(1) | General Commands Manual | podman-create(1) |
نام (NAME)
podman-create - ایجاد یک کانتینر جدید بدون شروع اجرای آن
خلاصه دستور (SYNOPSIS)
podman create [گزینهها] ایمیج [دستور [آرگومانها...]]
توضیحات (DESCRIPTION)
یک لایه کانتینر قابل نوشتن روی ایمیج مشخصشده ایجاد کرده و آن را برای اجرای دستور آماده میسازد. شناسه (ID) کانتینر در خروجی استاندارد چاپ میشود. این کار مشابه podman run -d است به جز اینکه کانتینر هرگز شروع به کار نمیکند. برای اجرای کانتینر بعداً میتوانید از دستور podman start استفاده کنید.
گزینهها (OPTIONS)
--add-host=hostname[;hostname[;...]]:ip
افزودن یک نگاشت سفارشی میزبان به IP (به صورت host=ip یا host:ip).
افزودن یک خط به /etc/hosts. قالب به صورت hostname=ip یا hostname:ip است. گزینه --add-host میتواند چندین بار مشخص شود.
--annotation=key=value
افزودن یادداشت (annotation) به کانتینر (منتقلشده به زمان اجرای OCI)
-a, --attach= اتصال به STDIN، STDOUT یا STDERR
--arch=ARCH
تنظیم ARCH تصویر مورد نظر برای واکشی روی مقدار ارائهشده به جای استفاده از معماری میزبان. (نمونهها: arm، arm64، 386، amd64، ppc64le، s390x)
--attach, -a=stdin | stdout | stderr
متصل کردن ورودی استاندارد (stdin)، خروجی استاندارد (stdout) یا خطای استاندارد (stderr).
--authfile=path
مسیر فایل احراز هویت. پیشفرض ${XDG_RUNTIME_DIR}/containers/auth.json است. برای اطلاعات بیشتر به containers-auth.json(5) مراجعه کنید. این فایل با استفاده از podman login ایجاد میشود.
اگر وضعیت مجوزدهی در آنجا یافت نشود، $HOME/.podman/config.json بررسی میشود که با استفاده از podman login تنظیم شده است.
نکته: همچنین میتوانید مسیر پیشفرض فایل احراز هویت را با تنظیم متغیر محیطی REGISTRY_AUTH_FILE بازنویسی کنید. export REGISTRY_AUTH_FILE=path
--blkio-weight=weight
ورودی/خروجی بلوکی (وزن نسبی)، بین 10 تا 1000، یا 0 برای غیرفعالسازی (پیشفرض 0)
--blkio-weight-device=device:weight
وزن ورودی/خروجی بلوکی (وزن نسبی دستگاه)
--cap-add=capability
افزودن قابلیتهای لینوکس (Linux capabilities)
--cap-drop=capability
حذف قابلیتهای لینوکس (Linux capabilities)
--cert-dir=path
استفاده از گواهیها در path (*.crt، *.cert، *.key) برای اتصال به رجیستری. دایرکتوری پیشفرض گواهیها /etc/containers/certs.d است.
--cgroup-conf=KEY=VALUE
پیکربندی منابع cgroup v2 برای کانتینر.
--cgroup-parent=path
گروه کنترلی (cgroup) والد اختیاری برای کانتینر
--cgroupns=mode
فضای نام cgroup مورد استفاده (host|private) 'host': اجرای کانتینر در فضای نام cgroup میزبان داکر 'private': اجرای کانتینر در فضای نام cgroup خصوصی خودش '': استفاده از فضای نام cgroup پیکربندیشده توسط گزینه default-cgroupns-mode در دیمن (پیشفرض)
--cgroups=how
تعیین نحوه مدیریت گروه کنترلی (cgroup) کانتینر (مانند enabled یا disabled یا no-conmon).
--chrootdirs=path
مسیر دایرکتوریهای chroot روی سیستم میزبان برای استفاده در کانتینر.
--cidfile=file
نوشتن شناسه کانتینر درون فایل
--conmon-pidfile=file
مسیر فایل برای ثبت شناسه فرآیند (PID) مانیتور conmon.
--cpu-period=limit
محدود کردن دوره CFS (زمانبند کاملاً منصفانه) پردازنده
--cpu-quota=limit
محدود کردن سهمیه CFS (زمانبند کاملاً منصفانه) پردازنده
--cpu-rt-period=microseconds
محدود کردن دوره بیدرنگ (real-time) پردازنده بر حسب میکروثانیه
--cpu-rt-runtime=microseconds
محدود کردن زمان اجرای بیدرنگ (real-time) پردازنده بر حسب میکروثانیه
-c, --cpu-shares=0 سهم پردازنده (وزن نسبی)
--cpu-shares, -c=shares
سهمهای پردازنده (وزن نسبی)
بهطور پیشفرض، همه کانتینرها سهم یکسانی از چرخههای پردازنده دریافت میکنند. این نسبت میتواند با تغییر وزن سهم پردازنده کانتینر نسبت به وزن سایر کانتینرهای در حال اجرا اصلاح شود.
برای تغییر نسبت از مقدار پیشفرض 1024، از پرچم --cpu-shares برای تنظیم وزن به 2 یا بالاتر استفاده کنید.
این نسبت تنها زمانی اعمال خواهد شد که فرایندهای با بار پردازشی بالا در حال اجرا باشند. هنگامی که وظایف در یک کانتینر بیکار هستند، کانتینرهای دیگر میتوانند از زمان پردازنده باقیمانده استفاده کنند. مقدار واقعی زمان پردازنده بسته به تعداد کانتینرهای در حال اجرا روی سیستم متغیر خواهد بود.
به عنوان مثال، سه کانتینر را در نظر بگیرید که یکی دارای cpu-share معادل 1024 و دو کانتینر دیگر دارای تنظیم cpu-share برابر با 512 هستند. هنگامی که فرایندها در هر سه کانتینر تلاش میکنند از %100 پردازنده استفاده کنند، کانتینر اول %50 از کل زمان پردازنده را دریافت خواهد کرد. اگر کانتینر چهارمی با cpu-share معادل 1024 اضافه کنید، کانتینر اول تنها %33 از پردازنده را دریافت میکند. کانتینرهای باقیمانده %16.5، %16.5 و %33 از پردازنده را دریافت خواهند کرد.
روی یک سیستم چندهستهای، سهمهای زمان پردازنده میان تمام هستههای پردازنده توزیع میشود. حتی اگر یک کانتینر به کمتر از %100 زمان پردازنده محدود شده باشد، میتواند از %100 هر هسته پردازنده به صورت جداگانه استفاده کند.
به عنوان مثال، سیستمی با بیش از سه هسته را در نظر بگیرید. اگر یک کانتینر {C0} را با -c=512 در حال اجرای یک فرایند، و کانتینر دیگری {C1} را با -c=1024 در حال اجرای دو فرایند راهاندازی کنید، این کار میتواند منجر به تقسیم سهمهای پردازنده به شکل زیر شود:
PID container CPU CPU share
100 {C0} 0 100% of CPU0
101 {C1} 1 100% of CPU1
102 {C1} 2 100% of CPU2
--cpus=number
تعداد پردازندهها
--cpuset-cpus=number
پردازندههای مجاز برای اجرا (0-3, 0,1)
--cpuset-mems=nodes
گرههای حافظه مجاز برای اجرا (0-3, 0,1)
--creds=[username[:password]]
مقدار [username[:password]] برای استفاده در احراز هویت با رجیستری در صورت نیاز. اگر یک یا هر دو مقدار ارائه نشوند، یک اعلان در خط فرمان ظاهر میشود و مقدار میتواند وارد شود. گذرواژه بدون بازتاب وارد میشود.
--decryption-key=key[:passphrase]
مقدار [key[:passphrase]] برای استفاده در رمزگشایی تصاویر. کلید میتواند به کلیدها و/یا گواهیها اشاره کند. رمزگشایی با تمام کلیدها امتحان خواهد شد. اگر کلید با یک عبارت عبور (passphrase) محافظت شده باشد، ارسال آن در آرگومان الزامی است و در غیر این صورت حذف میشود.
--device=host-device[:container-device][:permissions]
افزودن دستگاه میزبان به کانتینر
--device-cgroup-rule="type major:minor mode"
افزودن یک قانون به فهرست دستگاههای مجاز cgroup
--device-read-bps=path:rate
محدود کردن نرخ خواندن (بایت در ثانیه) از یک دستگاه
--device-read-iops=path:rate
محدود کردن نرخ خواندن (ورودی/خروجی در ثانیه) از یک دستگاه
--device-write-bps=path:rate
محدود کردن نرخ نوشتن (بایت در ثانیه) روی یک دستگاه
--device-write-iops=path:rate
محدود کردن نرخ نوشتن (ورودی/خروجی در ثانیه) روی یک دستگاه
--disable-content-trust
این یک گزینه مخصوص داکر برای غیرفعال کردن اعتبارسنجی تصویر در یک رجیستری کانتینر است و توسط Podman پشتیبانی نمیشود. این فلگ یک دستور بیاثر (NOOP) است و صرفاً برای سازگاری اسکریپتها ارائه شده است.
--dns=ipaddr
تنظیم کارسازهای DNS سفارشی
--dns-option=option
تنظیم گزینههای DNS
--dns-search=domain
تنظیم دامنههای جستجوی DNS سفارشی
--entrypoint="command" | '["command", arg1 , ...]'
بازنویسی ENTRYPOINT پیشفرض ایمیج
-e, --env= تنظیم متغیرهای محیطی
--env, -e=env
افزودن یک مقدار (برای نمونه env=value) به تصویر ساختهشده. این گزینه میتواند چندین بار استفاده شود. اگر نه = و نه یک *value* تعیین نشده باشد، اما env در محیط فعلی تنظیم شده باشد، مقدار از محیط فعلی به تصویر اضافه خواهد شد. مقدار env میتواند توسط دستورالعملهای ENV در Containerfile بازنویسی شود. برای حذف یک متغیر محیطی از تصویر ساختهشده، از گزینه --unsetenv استفاده کنید.
--env-file=file
خواندن فایلی از متغیرهای محیطی
--env-host
استفاده از تمام متغیرهای محیطی سیستم میزبان درون کانتینر.
--env-merge=env
ادغام متغیرهای محیطی مشخصشده با متغیرهای محیطی موجود در تصویر کانتینر.
--expose=port[/protocol]
در دسترس قرار دادن (expose) یک درگاه یا محدودهای از درگاهها
--gidmap=[flags]container_gid:from_gid[:amount]
نگاشت شناسههای گروه کاربری (GID) میزبان به کانتینر در حالت بدون ریشه (rootless).
--gpus=ENTRY
دستگاههای پردازنده گرافیکی (GPU) جهت افزودن به کانتینر ('all' برای ارسال همه GPUها)
--group-add=group | keep-groups
افزودن گروههای اضافی جهت عضویت
--group-entry=ENTRY
ورودی سفارشی برای فایل /etc/group درون کانتینر.
--health-cmd="command" | '["command", arg1 , ...]'
دستور جهت اجرا برای بررسی وضعیت سلامت
--health-interval=interval
فاصله زمانی بین اجرای بررسی (ms|s|m|h) (پیشفرض 0s)
--health-log-destination=directory_path
مقصد لاگهای بررسی سلامت کانتینر (مانند directory، local، none).
--health-max-log-count=number of stored logs
حداکثر تعداد رکوردهای لاگ بررسی سلامت که در حافظه ذخیره میشوند.
--health-max-log-size=size of stored logs
حداکثر اندازه فایل لاگ بررسی سلامت بر حسب بایت.
--health-on-failure=action
عملیاتی که در صورت ناموفق بودن بررسی سلامت انجام میشود (مانند none، kill، restart، stop).
--health-retries=retries
تعداد شکستهای پیاپی لازم برای گزارش ناسالم بودن
--health-start-period=period
دوره راهاندازی کانتینر برای مقداردهی اولیه قبل از آغاز شمارش معکوس health-retries بر حسب (ms|s|m|h) (پیشفرض 0s)
--health-startup-cmd="command" | '["command", arg1 , ...]'
دستور بررسی سلامت در زمان راهاندازی کانتینر.
--health-startup-interval=interval
فاصله زمانی بین بررسیهای سلامت هنگام راهاندازی کانتینر.
--health-startup-retries=retries
تعداد تلاشهای مجدد بررسی سلامت هنگام راهاندازی پیش از اعلام شکست.
--health-startup-success=retries
تعداد دفعات موفقیت متوالی لازم برای گذر از فاز راهاندازی سلامت.
--health-startup-timeout=timeout
حداکثر زمان انتظار برای تکمیل دستور بررسی سلامت در فاز راهاندازی.
--health-timeout=timeout
حداکثر زمان مجاز برای اجرای یک بررسی (ms|s|m|h) (پیشفرض 0s)
--help
چاپ نحوه استفاده
-h, --hostname="" نام میزبان کانتینر
--hostname, -h=name
تنظیم نام میزبان (hostname) سفارشی برای کانتینر.
--hosts-file=path | none | image
مسیر فایل سفارشی /etc/hosts برای سوار کردن درون کانتینر.
--hostuser=name
نام کاربری روی میزبان که کانتینر به نمایندگی از آن اجرا میشود.
--http-proxy
بهطور پیشفرض، در صورتی که متغیرهای محیطی پیشکار (proxy) برای فرایند Podman تنظیم شده باشند، به درون کانتینر منتقل میشوند. این رفتار را میتوان با تنظیم گزینه --http-proxy روی false غیرفعال کرد. متغیرهای محیطی منتقلشده شامل http_proxy، https_proxy، ftp_proxy، no_proxy و همچنین نگارشهای با حروف بزرگ آنها هستند.
پیشفرض true است.
--image-volume=bind | tmpfs | ignore
نحوه مدیریت حجمهای تعریفشده در ایمیج (bind، tmpfs یا ignore).
--init
اجرای یک فرایند init درون کانتینر جهت هدایت سیگنالها و جمعآوری فرایندهای زامبی
-i, --interactive[=false] باز نگه داشتن STDIN حتی اگر متصل نباشد
--init-ctr=type
تعیین نوع کانتینر به عنوان یک کانتینر اولیه (init container) برای یک پاد.
--init-path=path
مسیر باینری اجرایی پردازش init کانتینر.
--interactive, -i
باز نگه داشتن ورودی استاندارد (stdin) حتی اگر کانتینر به ترمینال متصل نباشد.
--ip=IPv4
آدرس IPv4 (مانند 172.30.100.104)
--ip6=IPv6
آدرس IPv6 (مانند 2001:db8::33)
--ipc=ipc
حالت IPC مورد استفاده
--label, -l=key=value
افزودن یک برچسب تصویر label (برای نمونه label=value) به متاداده تصویر. این گزینه میتواند چندین بار استفاده شود. اگر نام label ذکر شود، اما نه = و نه یک value ارائه نشود، آنگاه label روی یک مقدار خالی تنظیم میشود.
کاربران میتوانند یک LABEL ویژه به صورت io.containers.capabilities=CAP1,CAP2,CAP3 در یک Containerfile تنظیم کنند که فهرست قابلیتهای (capabilities) لینوکس مورد نیاز برای اجرای درست کانتینر را مشخص میکند. این برچسب تعیینشده در تصویر کانتینر به موتورهای کانتینر، مانند Podman، که این برچسب را میشناسند میگوید تا کانتینر را فقط با همین قابلیتها اجرا کنند. موتور کانتینر کانتینر را فقط با قابلیتهای مشخصشده راهاندازی میکند، تا زمانی که این فهرست از قابلیتها زیرمجموعهای از فهرست پیشفرض باشد.
اگر قابلیتهای مشخصشده در مجموعه پیشفرض نباشند، موتورهای کانتینر باید یک پیام خطا چاپ کنند و کانتینر را با قابلیتهای پیشفرض اجرا خواهند کرد.
--label-file=file
خواندن فایلی از برچسبها که با خط جدا شدهاند
--link-local-ip=ip
آدرسهای پیوند-محلی (link-local) مربوط به IPv4/IPv6 کانتینر
--log-driver=driver
راهانداز ثبت وقایع (log driver) برای کانتینر
--log-opt=name=value
گزینههای راهانداز ثبت وقایع
--mac-address=address
آدرس MAC کانتینر (مانند 92:d0:c6:0a:29:33)
-m, --memory=0 محدودیت حافظه
--memory, -m=number[unit]
محدودیت حافظه (قالب: []، که در آن واحد میتواند b، k، m یا g باشد)
به شما امکان میدهد حافظه در دسترس کانتینر را محدود کنید. اگر میزبان از حافظه swap پشتیبانی کند، تنظیم حافظه -m میتواند بزرگتر از رم (RAM) فیزیکی باشد. اگر محدودیت 0 مشخص شود (عدم استفاده از -m)، حافظه کانتینر محدود نمیشود. محدودیت واقعی ممکن است به ضریبی از اندازه صفحه سیستمعامل گرد شود (این مقدار بسیار بزرگ خواهد بود، یعنی میلیونها تریلیون).
--memory-reservation=number[unit]
محدودیت نرم حافظه
--memory-swap=number[unit]
حد حافظه مبادلهای (swap) برابر با مجموع حافظه بهعلاوه swap؛ مقدار '-1' برای فعال کردن swap نامحدود
--memory-swappiness=number
تنظیم میزان مبادله حافظه کانتینر (swappiness) از 0 تا 100
--mount=type=TYPE,TYPE-SPECIFIC-OPTION[,...]
اتصال یک فایلسیستم به کانتینر
--name=name
اختصاص یک نام به کانتینر
--network=mode, --net
اتصال یک کانتینر به یک شبکه
--network-alias=alias
افزودن نام مستعار در سطح شبکه برای کانتینر
--no-healthcheck
غیرفعال کردن هرگونه HEALTHCHECK تعیینشده توسط کانتینر
--no-hostname
فایل /etc/hostname را در کانتینر برای دستورالعملهای RUN ایجاد نمیکند.
به طور پیشفرض، Podman فایل /etc/hostname را مدیریت کرده و نام میزبان کانتینر را اضافه میکند. هنگامی که گزینه --no-hostname تنظیم شود، فایل /etc/hostname ایمیج (در صورت وجود) بدون تغییر حفظ خواهد شد.
--no-hosts
فایل /etc/hosts را در کانتینر برای دستورالعملهای RUN ایجاد نمیکند.
به طور پیشفرض، Podman فایل /etc/hosts را مدیریت کرده و آدرس IP خود کانتینر را اضافه میکند. گزینه --no-hosts این مورد را غیرفعال میکند و فایل /etc/hosts ایمیج بدون تغییر حفظ خواهد شد. با گزینه --add-host تداخل دارد.
--oom-kill-disable
غیرفعال کردن کشنده کمبود حافظه (OOM Killer)
--oom-score-adj=num
تنظیم اولویتهای OOM میزبان (از -1000 تا 1000)
--os=OS
تنظیم سیستمعامل تصویری که باید واکشی شود روی مقدار ارائهشده، به جای استفاده از سیستمعامل کنونی میزبان.
--passwd-entry=ENTRY
ورودی سفارشی برای فایل /etc/passwd درون کانتینر.
--personality=persona
تنظیم دامنه اجرای فراخوانیهای سیستمی لینوکس (Linux Personality).
--pid=mode
فضای نام PID مورد استفاده
--pidfile=path
نوشتن شناسه فرآیند (PID) کانتینر درون فایل مشخصشده.
--pids-limit=limit
تنظیم محدودیت تعداد شناسههای فرایند (pids) کانتینر (مقدار -1 برای نامحدود)
--platform=OS/ARCH
تنظیم پلتفرم در صورتی که کارساز قابلیت چندپلتفرمی داشته باشد
--pod=name
اجرای کانتینر درون یک پاد موجود یا ایجاد پاد جدید با پیشوند new:.
--pod-id-file=file
خواندن یا نوشتن شناسه پاد از یا به یک فایل.
--privileged
اعطای دسترسیهای گسترده به این کانتینر
-p, --publish= انتشار درگاه(های) کانتینر روی میزبان
-P, --publish-all[=false] انتشار تمامی درگاههای در دسترس به درگاههای تصادفی
--publish, -p=[[hostIP:][hostPort]:]containerPort[/protocol]
انتشار یک پورت کانتینر یا دامنهای از پورتها به پورتهای میزبان.
--publish-all, -P
انتشار خودکار تمامی پورتهای تعریفشده در ایمیج به پورتهای تصادفی میزبان.
--pull=policy
دریافت ایمیج پیش از ایجاد ("always"، "missing"، "never")
-q, --quiet[=false] بیصدا کردن خروجی دریافت ایمیج
--quiet, -q
در صورتی که نیاز به دریافت تصویر از مخزن باشد، از نمایش روند پیشرفت جلوگیری میکند.
--rdt-class=intel-rdt-class-of-service
کلاس فناوری توزیع منابع اینتل (Intel RDT) برای اختصاص پهنای باند و حافظه کش.
--read-only
سوار کردن فایلسیستم ریشه کانتینر بهصورت فقطخواندنی
--read-only-tmpfs
سوار کردن سیستمفایل موقت tmpfs روی /tmp و /var/tmp در حالت فقطخواندنی.
--replace
در صورت وجود کانتینری با همین نام، به صورت خودکار آن را متوقف و جایگزین کند.
--requires=container
تعیین کانتینرهای پیشنیاز که پیش از این کانتینر باید ایجاد و اجرا شوند.
--restart=policy
سیاست راهاندازی مجدد هنگام خروج کانتینر
--retry=attempts
تعداد دفعات تلاش مجدد در صورت بروز خطا هنگام دریافت تصاویر از مخزن.
مقدار پیشفرض 3 است.
--retry-delay=duration
مدتزمان تاخیر بین تلاشهای مجدد در صورت بروز خطا هنگام دریافت تصاویر از مخزن.
مقدار پیشفرض 2s است.
--rm
حذف خودکار کانتینر و حجمهای ناشناس وابسته به آن پس از خروج
--rootfs
استفاده از یک دایرکتوری سیستمفایل ریشه به جای ایمیج کانتینر.
--sdnotify=container | conmon | healthy | ignore
تعیین حالت ارسال اعلانهای systemd sd_notify (مانند container، conmon یا ignore).
--seccomp-policy=policy
خطمشی بارگذاری پروفایل seccomp (مانند default یا image).
--secret=secret[,opt=opt ...]
ارسال اطلاعات محرمانه (سکرت / secret) برای استفاده در Containerfile جهت ساخت ایمیجها به روشی امن که در نهایت در ایمیج نهایی ذخیره نشود یا در مراحل دیگر دیده نشود. مقدار سکرت از یک متغیر محیطی یا پرونده با نام ارائهشده توسط گزینه "id"، یا با نام تعیینشده توسط گزینه "src" (در صورت مشخص شدن)، یا از یک متغیر محیطی مشخصشده با گزینه "env" خوانده میشود. اطلاعات محرمانه (سکرت) بهطور پیشفرض در مسیر /run/secrets/<id> در کانتینر متصل (mount) خواهد شد.
برای استفاده از سکرت در ادامه، از فلگ --mount در دستورالعمل RUN در داخل یک Containerfile استفاده کنید:
RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret
محل قرارگیری سکرت در کانتینر را میتوان با استفاده از گزینههای "target"، "dst" یا "destination" از فلگ RUN --mount بازنویسی کرد.
RUN --mount=type=secret,id=mysecret,target=/run/secrets/myothersecret cat /run/secrets/myothersecret
همچنین سکرت را میتوان بهصورت متغیر محیطی در اختیار فرایند قرار داد:
RUN --mount=type=secret,id=mysecret,env=FOO sh -c 'echo "Hello $FOO"'
نکته: تغییر محتوای پروندههای سکرت، موجب بازسازی مجدد لایههایی که از سکرتهای مذکور استفاده میکنند نخواهد شد.
--security-opt=option
گزینههای امنیتی
--shm-size=number[unit]
اندازه مسیر /dev/shm
--shm-size-systemd=number[unit]
اندازه سیستمفایل موقت /dev/shm در زمان فعال بودن حالت systemd.
--stop-signal=signal
سیگنال متوقف کردن کانتینر
--stop-timeout=seconds
مهلت زمانی (بر حسب ثانیه) برای متوقف کردن کانتینر
--subgidname=name
نام کاربری در /etc/subgid برای تخصیص شناسههای گروه کاربری در حالت بدون ریشه.
--subuidname=name
نام کاربری در /etc/subuid برای تخصیص شناسههای کاربری در حالت بدون ریشه.
--sysctl=name=value
گزینههای sysctl
--systemd=true | false | always
اجرای کانتینر در حالت سازگار با systemd (مانند true، false یا always).
--timeout=seconds
حداکثر زمان مجاز اجرای کانتینر پیش از ارسال سیگنال خاتمه به ثانیه.
--tls-verify
الزام استفاده از HTTPS و اعتبارسنجی گواهیها هنگام برقراری ارتباط با مخازن کانتینر (پیشفرض true است). هنگام برقراری ارتباط با یک مخزن ناامن نمیتوان از اعتبارسنجی TLS استفاده کرد.
--tmpfs=fs
سوار کردن یک دایرکتوری tmpfs
-t, --tty[=false] تخصیص یک شبه-TTY
--tty, -t
تخصیص یک شبهترمینال (pseudo-TTY) به کانتینر.
--tz=timezone
تنظیم منطقه زمانی (Timezone) محلی درون کانتینر.
--uidmap=[flags]container_uid:from_uid[:amount]
نگاشت شناسههای کاربری (UID) سیستم میزبان به کانتینر در حالت بدون ریشه.
--ulimit=option
گزینههای ulimit
--umask=umask
تنظیم ماسک دسترسی ایجاد فایل (umask) درون کانتینر.
--unsetenv=env
حذف متغیرهای محیطی از تصویر نهایی.
--unsetenv-all
پاکسازی تمامی متغیرهای محیطی به ارث رسیده از ایمیج پایه.
--user, -u=user[:group]
تعیین نام کاربری یا شناسه کاربری (UID/GID) برای اجرای فرآیند کانتینر.
--userns=mode
فضای نام کاربر مورد استفاده
--uts=mode
فضای نام UTS مورد استفاده
-v, --volume= سوار کردن یک حجم بهصورت bind mount
--variant=VARIANT
گونه (variant) معماری تصویری که باید دریافت شود را تنظیم میکند.
--volume, -v=[[SOURCE-VOLUME|HOST-DIR:]CONTAINER-DIR[:OPTIONS]]
ایجاد یک اتصال پیوندی (bind mount). اگر مشخص کنید -v /HOST-DIR:/CONTAINER-DIR، ابزار Podman مسیر /HOST-DIR در میزبان را به /CONTAINER-DIR درون کانتینر Podman پیوند میزند. مقادیر OPTIONS فهرستی جداشده با کاما هستند و میتوانند شامل موارد زیر باشند:
- [rw|ro]
- [U]
- [z|Z|O]
- [[r]shared|[r]slave|[r]private|[r]unbindable] [1] ⟨#Footnote1⟩
مسیر CONTAINER-DIR باید یک مسیر مطلق مانند /src/docs باشد. مسیر HOST-DIR نیز باید یک مسیر مطلق باشد. Podman مسیر HOST-DIR را به مسیری که مشخص میکنید bind-mount میکند. برای نمونه، اگر /foo را بهعنوان مسیر میزبان بدهید، Podman محتویات /foo را در سیستمفایل کانتینر روی میزبان کپی کرده و آن را به درون کانتینر bind-mount میکند.
میتوانید چندین گزینه -v را برای سوار کردن یک یا چند اتصال به یک کانتینر مشخص کنید.
اتصالهای جلد حفاظتشده در برابر نوشتن (Write Protected Volume Mounts)
میتوانید پسوند :ro یا :rw را به یک جلد اضافه کنید تا به ترتیب در حالت فقطخواندنی یا خواندنی-نوشتنی متصل شود. بهطور پیشفرض، جلدها بهصورت خواندنی-نوشتنی سوار میشوند. مثالها را ببینید.
تغییر مالکیت اتصالهای جلد (Chowning Volume Mounts)
بهطور پیشفرض، Podman مالک و گروه دایرکتوریهای جلد منبع متصلشده به کانتینرها را تغییر نمیدهد. اگر کانتینری در یک فضاینام کاربری (user namespace) جدید ایجاد شود، UID و GID درون کانتینر ممکن است با UID و GID متفاوتی روی میزبان متناظر باشند.
پسوند :U به Podman اعلام میکند تا بر پایه UID و GID درون کانتینر، از UID و GID درست میزبان استفاده کرده و مالک و گروه جلد منبع را تغییر دهد.
برچسبگذاری اتصالهای جلد (Labeling Volume Mounts)
سامانههای برچسبگذاری مانند SELinux نیازمند قرارگیری برچسبهای مناسب روی محتوای جلد متصلشده به کانتینر هستند. بدون برچسب، سامانه امنیتی ممکن است از استفاده فرایندهای در حال اجرا درون کانتینر از محتوا جلوگیری کند. بهطور پیشفرض، Podman برچسبهای تنظیمشده توسط سیستمعامل را تغییر نمیدهد.
برای تغییر یک برچسب در بستر کانتینر، میتوانید یکی از دو پسوند :z یا :Z را به اتصال جلد اضافه کنید. این پسوندها به Podman میگویند که اشیای فایل روی جلدهای اشتراکی را دوباره برچسبگذاری کند. گزینه z به Podman میگوید که دو کانتینر محتوای جلد را به اشتراک میگذارند. در نتیجه، Podman محتوا را با یک برچسب محتوای مشترک برچسبگذاری میکند. برچسبهای جلد مشترک به همه کانتینرها اجازه خواندن/نوشتن محتوا را میدهند. گزینه Z به Podman میگوید که محتوا را با یک برچسب خصوصی غیرمشترک برچسبگذاری کند. تنها کانتینر فعلی میتواند از یک جلد خصوصی استفاده کند.
اتصالهای جلد اورلی (Overlay Volume Mounts)
پرچم :O به Podman اعلام میکند دایرکتوری را از میزبان با استفاده از سیستمفایل Overlay بهعنوان یک فضای ذخیرهسازی موقت سوار کند. کانتینرهای دستور RUN مجاز هستند محتویات درون نقطه اتصال را تغییر دهند و این تغییرات در فضای ذخیرهسازی کانتینر در یک دایرکتوری جداگانه ذخیره میشوند. در اصطلاحات سامانه فایل Overlay، دایرکتوری منبع lower و دایرکتوری ذخیرهسازی کانتینر upper خواهد بود. اصلاحات انجامشده در نقطه اتصال هنگام پایان اجرای دستور RUN از بین میروند، شبیه به یک نقطه اتصال tmpfs.
هر اجرای بعدی دستورهای RUN محتوای دایرکتوری منبع اصلی را میبیند؛ و هر تغییری از دستورات RUN قبلی دیگر وجود نخواهد داشت.
یک مورد استفاده از اتصال overlay، به اشتراک گذاشتن حافظه نهان بستهها (package cache) از میزبان به درون کانتینر برای افزایش سرعت ساخت است.
نکته:
- پرچم O مجاز نیست همراه با پرچمهای Z یا z مشخص شود. محتوای متصلشده به درون کانتینر با برچسب خصوصی برچسبگذاری میشود. در سامانههای SELinux، برچسبهای موجود در دایرکتوری منبع باید برای برچسب کانتینر قابلخواندن باشند. در غیر این صورت، تفکیک کانتینر SELinux باید غیرفعال شود تا کانتینر کار کند.
- تغییر دایرکتوری جلدی که با یک اتصال overlay به درون کانتینر متصل شده است میتواند خطاهای غیرمنتظره به وجود آورد. توصیه میشود تا پایان اجرای کانتینر این دایرکتوری را تغییر ندهید.
بهطور پیشفرض جلدهای bind-mount شده private هستند. بدین معنا که هرگونه اتصالی که درون کانتینر انجام شود روی میزبان قابل مشاهده نخواهد بود و برعکس. این رفتار را میتوان با مشخص کردن ویژگی انتشار اتصال جلد تغییر داد.
هنگامی که خطمشی انتشار اتصال روی shared تنظیم شود، هرگونه اتصال انجامشده درون کانتینر روی آن جلد هم برای میزبان و هم کانتینر قابل مشاهده خواهد بود. هنگامی که خطمشی انتشار اتصال روی slave تنظیم شود، انتشار یکطرفه اتصال فعال شده و هرگونه اتصال انجامشده روی میزبان برای آن جلد تنها در داخل کانتینر قابل مشاهده خواهد بود. برای کنترل ویژگی انتشار اتصال جلد، از پرچمهای انتشار :[r]shared، :[r]slave، [r]private یا [r]unbindable استفاده کنید. ویژگی انتشار را فقط میتوان برای جلدهای bind-mount شده تعیین کرد و نه جلدهای داخلی یا جلدهای نامگذاریشده. برای کارکرد انتشار اتصال روی نقطه اتصال منبع (نقطه اتصالی که دایرکتوری منبع روی آن سوار شده است)، باید ویژگیهای انتشار مناسب را داشته باشد. برای جلدهای shared، نقطه اتصال منبع باید shared باشد. و برای جلدهای slave، اتصال منبع باید shared یا slave باشد. [1] ⟨#Footnote1⟩
از دستور df <source-dir> برای تعیین اتصال منبع و سپس از دستور findmnt -o TARGET,PROPAGATION <source-mount-dir> برای تعیین ویژگیهای انتشار اتصال منبع استفاده کنید؛ اگر ابزار findmnt در دسترس نیست، نقطه اتصال منبع را میتوان با بررسی مدخل mount در فایل /proc/self/mountinfo مشخص کرد. optional fields را بررسی کنید و ببینید آیا ویژگی انتشاری مشخص شده است یا خیر. shared:X به معنای shared بودن اتصال است، master:X به معنای slave بودن اتصال است و اگر چیزی وجود نداشته باشد به این معناست که اتصال private است. [1] ⟨#Footnote1⟩
برای تغییر ویژگیهای انتشار یک نقطه اتصال از دستور mount استفاده کنید. برای نمونه، برای bind-mount کردن دایرکتوری منبع /foo دستورهای mount --bind /foo /foo و mount --make-private --make-shared /foo را اجرا کنید. این کار /foo را به یک نقطه اتصال shared تبدیل میکند. ویژگیهای انتشار نقطه اتصال منبع را میتوان مستقیماً تغییر داد. برای نمونه اگر / نقطه اتصال منبع برای /foo باشد، دستور mount --make-shared / را برای تبدیل / به یک اتصال shared به کار ببرید.
مثال (EXAMPLE)
podman from --pull imagename
podman from --pull podman://myregistry.example.com/imagename
podman from podman-daemon:imagename:imagetag
podman from --name mycontainer podman-archive:filename
podman from oci-archive:filename
podman from --name mycontainer dir:directoryname
podman from --pull-always --name "mycontainer" myregistry.example.com/imagename
podman from --tls-verify=false myregistry/myrepository/imagename:imagetag
podman from --creds=myusername:mypassword --cert-dir ~/auth myregistry/myrepository/imagename:imagetag
podman from --authfile=/tmp/auths/myauths.json myregistry/myrepository/imagename:imagetag
podman from --memory 40m --cpu-shares 2 --cpuset-cpus 0,2 --security-opt label=level:s0:c100,c200 myregistry/myrepository/imagename:imagetag
podman from --ulimit nofile=1024:1028 --cgroup-parent /path/to/cgroup/parent myregistry/myrepository/imagename:imagetag
podman from --volume /home/test:/myvol:ro,Z myregistry/myrepository/imagename:imagetag
podman from -v /home/test:/myvol:z,U myregistry/myrepository/imagename:imagetag
podman from -v /var/lib/yum:/var/lib/yum:O myregistry/myrepository/imagename:imagetag
podman from --arch=arm --variant v7 myregistry/myrepository/imagename:imagetag
متغیرهای محیطی (ENVIRONMENT)
BUILD_REGISTRY_SOURCES
متغیر BUILD_REGISTRY_SOURCES در صورت مقداردهی، به عنوان یک شیء JSON در نظر گرفته میشود که شامل فهرستهایی از نامهای رجیستری ذیل کلیدهای insecureRegistries، blockedRegistries و allowedRegistries است.
هنگام دریافت (pull) تصویر از یک رجیستری، اگر نام رجیستری با هر یک از موارد موجود در فهرست blockedRegistries مطابقت داشته باشد، تلاش برای دریافت تصویر رد میشود. اگر در فهرست allowedRegistries رجیستریهایی وجود داشته باشند و نام رجیستری در فهرست نباشد، تلاش برای دریافت رد میشود.
TMPDIR متغیر محیطی TMPDIR به کاربر امکان میدهد محل ذخیره پروندههای موقت را هنگام دریافت و ارسال (pull و push) تصاویر مشخص کند. مقدار پیشفرض '/var/tmp' است.
پروندهها (FILES)
registries.conf (/etc/containers/registries.conf)
پرونده registries.conf پرونده پیکربندی است که مشخص میکند هنگام تکمیل نامهای تصاویری که فاقد بخش رجیستری یا دامنه هستند، باید به کدام رجیستریهای کانتینر مراجعه شود.
policy.json (/etc/containers/policy.json)
پرونده سیاست امضا. این پرونده سیاست اعتماد را برای تصاویر کانتینر تعریف میکند. تعیین میکند کدام رجیستریهای کانتینر میتوانند برای تصاویر استفاده شوند و اینکه آیا ابزار باید به تصاویر اعتماد کند یا خیر.
همچنین ببینید (SEE ALSO)
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)
پانویسها (FOOTNOTES)
۱: پروژه Podman به فراگیری، از ارزشهای بنیادین متنباز، متعهد است. اصطلاحات انتشار سوارکردن (mount propagation) شامل master و slave که در اینجا استفاده شده، مشکلساز و تفرقهافکن است و باید دگرگون شود. با این حال، این اصطلاحات هماکنون درون هسته لینوکس استفاده میشوند و در این مقطع زمانی باید به همان صورت به کار روند. هنگامی که نگهدارندگان هسته این کاربرد را اصلاح کنند، Podman بیدرنگ از آن پیروی خواهد کرد.
--volumes-from=CONTAINER[:OPTIONS]
سوار کردن حجمها از کانتینر(های) مشخصشده
-w, --workdir="" دایرکتوری کاری درون کانتینر
ببینید (SEE ALSO)
--workdir, -w=dir
تعیین دایرکتوری کاری درون کانتینر هنگام اجرا.
مثالها (EXAMPLES)
ایجاد یک کانتینر جدید با استفاده از ایمیج fedora:
$ podman create -it fedora bash 6d353a48c72447cc7d0799e8334460598a3c8e9b81561726ca21c385b0d0e653
ایجاد یک کانتینر با نام مشخص:
$ podman create --name my-container fedora
وضعیت خروج (EXIT STATUS)
کد خروج صفر نشاندهنده موفقیت کامل عملیات ایجاد کانتینر است. کدهای غیرصفر نشاندهنده خطای پیکربندی، عدم دسترسی یا عدم وجود ایمیج مشخصشده هستند.
همچنین ببینید (SEE ALSO)
تاریخچه (HISTORY)
پاییز ۲۰۱۷، در ابتدا توسط Urvashi Mohnani کامپایل شد.