| podman-machine-init(1) | General Commands Manual | podman-machine-init(1) |
نام (NAME)
podman-machine-init - راهاندازی یک ماشین مجازی جدید
خلاصه دستور (SYNOPSIS)
podman machine init [options] [name]
توضیحات (DESCRIPTION)
یک ماشین مجازی جدید برای پادمن راهاندازی میکند.
نام پیشفرض ماشین podman-machine-default است. اگر نام ماشین به عنوان آرگومان مشخص نشود، نام ماشین جدید podman-machine-default خواهد بود.
فقط در حالت بدون ریشه (rootless).
پادمن در مکاواس (MacOS) و ویندوز (Windows) به یک ماشین مجازی نیاز دارد؛ زیرا کانتینرها مبتنی بر لینوکس هستند — کانتینرها بر روی هیچ سیستمعامل دیگری اجرا نمیشوند زیرا قابلیتهای بنیادین کانتینرها به هسته لینوکس وابسته است. دستور podman machine باید برای مدیریت ماشینهای مکاواس و ویندوز استفاده شود، اما استفاده از آن در لینوکس اختیاری است.
دستور podman machine init یک ماشین مجازی لینوکسی جدید راهاندازی میکند که کانتینرها در آن اجرا میشوند. کلیدهای SSH برای دسترسی به ماشین مجازی به صورت خودکار ایجاد میشوند و اتصالات سیستمی به حساب کاربری ریشه (root) و یک حساب کاربری عادی درون ماشین مجازی اضافه میگردند.
بهصورت پیشفرض، توزیع ماشین مجازی یک ایمیج سفارشی مبتنی بر Fedora CoreOS است که در quay.io/podman/machine-os منتشر شده است (ساختهشده در https://github.com/containers/podman-machine-os). WSL یک استثنا است و بر پایه یک ایمیج سفارشی فدورا قرار دارد.
برای بررسی اینکه آیا ارتقایی برای سیستمعامل ماشین شما در دسترس است یا خیر، میتوانید دستور زیر را اجرا کنید:
$ podman machine ssh 'sudo rpm-ostree upgrade --check'
اگر بهروزرسانی موجود باشد، میتوانید دستور بالا را مجدداً بدون گزینه --check اجرا کنید تا سیستمعامل شما بهروزرسانی شود. پس از بهروزرسانی، باید ماشین خود را با دستور podman machine stop && podman machine start متوقف کرده و مجدداً راهاندازی کنید تا تغییرات اعمال شوند.
سازوکار بالا صرفاً برای بهروزرسانی نسخههای وصلهای (Patch / Z) پادمن استفاده میشود. برای ارتقا به نسخههای اصلی و فرعی جدید (X.Y) از دستور podman machine os apply استفاده کنید؛ برای اطلاعات بیشتر مستندات مربوط به آن را ببینید.
نکته: بهروزرسانی به روش فوق ممکن است منجر به عدم تطابق نسخه بین پادمن روی سیستم میزبان و پادمن درون ماشین مجازی شود. اجرای podman info نسخه هر دو را نشان میدهد. پیکربندیای که در آن نسخههای میزبان و ماشین پادمن همخوانی نداشته باشند پشتیبانی نمیشود.
برای بهروزرسانی ایمیج WSL باید دستور dnf update را درون آن اجرا کنید؛ از دستور زیر استفاده فرمایید:
$ podman machine ssh dnf update
تنظیمات پیشفرض ماشین پادمن را میتوان از طریق بخش [machine] در فایل containers.conf(5) تعیین کرد.
گزینهها (OPTIONS)
--cpus=number
تعداد پردازندهها (CPU).
--disk-size=number
اندازه دیسک برای ماشین مجازی مهمان بر حسب GiB.
--help
چاپ راهنمای نحوه استفاده از دستور.
--ignition-path
مسیر کامل فایل ignition.
در صورت ارائه فایل ignition، فایل در پوشه CONF_DIR کاربر کپی شده و تغییر نام مییابد. علاوه بر این، هیچ کلید SSHای تولید نشده و هیچ اتصال سیستمیای برقرار نمیشود. فرض بر این است که کاربر این اقدامات را بهصورت دستی یا از روشهای دیگر انجام میدهد.
--image
رجیستری، مسیر یا URL کامل به یک ایمیج ماشین مجازی. مقصد رجیستری باید به صورت docker://registry/repo/image:version باشد.
نکته: تنها ایمیجهای ارائهشده توسط پادمن پشتیبانی میشوند.
--import-native-ca
وارد کردن گواهیهای معتبر CA از سیستم میزبان به درون ماشین. هنگامی که روی true تنظیم شود، گواهیها از سیستم میزبان در زمان بالا آمدن ماشین وارد میشوند. این کار به کانتینرهای در حال اجرا درون ماشین اجازه میدهد تا به همان مراجع صدور گواهی (CA) که سیستمعامل میزبان اعتماد دارد، اعتماد کنند. مقدار پیشفرض false است.
--memory, -m=number
میزان حافظه (بر حسب MiB). توجه: 1024MiB = 1GiB.
--now
راهاندازی فوری ماشین مجازی بلافاصله پس از آمادهسازی آن.
--playbook
افزودن پلیبوک انسیبل (Ansible playbook) ارائهشده به ماشین و اجرای آن پس از نخستین بوت.
نکته: پلیبوک با همان دسترسیهای اعطا شده به کاربر در ماشین مجازی اجرا خواهد شد. پلیبوک ارائهشده نمیتواند شامل فایلهای دیگری از سیستم میزبان باشد، زیرا آنها کپی نخواهند شد. استفاده از فلگ --playbook نیازمند این است که ایمیج حاوی انسیبل باشد. ایمیج پیشفرض ارائهشده به صورت داخلی انسیبل را در بر دارد.
--provider
مشخص کردن ارائهدهنده برای ماشینی که ساخته میشود. این امکان به کاربران اجازه میدهد تا ارائهدهنده پیشفرض را در پلتفرمهایی که چندین ارائهدهنده دارند، بازنویسی کنند.
--rootful
مشخص میکند که آیا این ماشین اجرای کانتینرها را در حالت با دسترسی ریشه (true) یا بدون ریشه (false) ترجیح میدهد. این گزینه در صورتی که پیکربندی اتصال راه دوری وجود نداشته باشد، پیشفرض اتصال راه دور را تعیین میکند.
فوروارد کردن API، در صورت در دسترس بودن، از این تنظیم پیروی میکند.
--swap, -s=number
حافظه مبادله یا سواپ (بر حسب MiB). توجه: 1024MiB = 1GiB.
یک فایل zram-generator.conf ایجاد میکند که در آن zram-size روی مقدار ارسالشده به --swap تنظیم شده است.
--timezone
تنظیم منطقه زمانی برای ماشین و کانتینرها. مقادیر معتبر شامل local یا یک منطقه زمانی مانند America/Chicago هستند. مقدار local که حالت پیشفرض است، به معنای استفاده از منطقه زمانی سیستم میزبان ماشین است.
تنظیم منطقه زمانی در WSL استفاده نمیشود. WSL به طور خودکار منطقه زمانی را با سیستمعامل ویندوز میزبان هماهنگ میکند.
--tls-verify
الزام استفاده از HTTPS و اعتبارسنجی گواهیها هنگام تماس با رجیستریها (پیشفرض: true). اگر صریحاً روی true تنظیم شود، اعتبارسنجی TLS انجام میگیرد. اگر روی false تنظیم شود، اعتبارسنجی TLS انجام نمیشود. در صورت مشخص نشدن، اعتبارسنجی TLS انجام میگیرد مگر اینکه رجیستری مقصد در containers-registries.conf(5) به عنوان یک رجیستری ناامن ثبت شده باشد.
--update-connection, -u
هنگامی که همراه با podman machine init --now یا podman machine start استفاده شود، این گزینه اتصال سیستمی ماشین مرتبط را به عنوان پیشفرض تنظیم میکند. هنگام استفاده از این گزینه، یک فلگ -u یا -update-connection مقدار را روی true تنظیم میکند. برای تنظیم این مقدار روی false، به معنی عدم تغییر و عدم پرسش، از --update-connection=false استفاده کنید. اگر مقدار تنظیم نشده باشد و stdin یک tty نباشد، هیچ پرسش یا بهروزرسانیای رخ نخواهد داد.
اگر مقدار روی true تنظیم شود، اتصال ماشین به عنوان پیشفرض سیستم تنظیم میشود. اگر مقدار روی false تنظیم شود، پیشفرض سیستم بدون تغییر باقی میماند. اگر گزینه تنظیم نشود، از کاربر پرسیده خواهد شد که آیا مایل به تغییر آن است یا خیر.
--usb=bus=number,devnum=number یا vendor=hexadecimal,product=hexadecimal
اختصاص یک دستگاه USB از میزبان به ماشین مجازی از طریق گذردهی مستقیم USB (passthrough). فقط برای ماشینهای QEMU پشتیبانی میشود.
دستگاه برای عبور به ماشین مجازی باید دسترسیهای مناسبی داشته باشد؛ یعنی باید متعلق به گروه کاربری شما باشد.
توجه داشته باشید که استفاده از شماره گذرگاه (bus) و شماره دستگاه (device number) سادهتر است، اما این مقادیر در هر بار بوت یا با جدا کردن دستگاه ممکن است تغییر کنند.
هنگام مشخص کردن USB با شناسه سازنده (vendor) و محصول (product)، چنانچه بیش از یک دستگاه دارای شناسه یکسان باشند، اولین دستگاه در دسترس اختصاص داده میشود.
--user-mode-networking
این گزینه فقط برای ارائهدهنده WSL در ویندوز قابل استفاده است. در تمامی پلتفرمهای دیگر این گزینه نادیده گرفته میشود و شبکه در حالت کاربر همواره در آنجا true خواهد بود، زیرا این ارائهدهندهها همیشه به gvproxy (ابزار شبکه حالت کاربر ما برای ماشینهای مجازی) وابستهاند.
در مقابل، بکاند ویندوز/WSL به صورت پیشفرض false است و از پیکربندی استاندارد شبکه WSL پیروی میکند. تغییر این تنظیم به true در ویندوز/WSL به پادمن اطلاع میدهد که در زمان شروع این نمونه ماشین، راهاندازی شبکه WSL را با یک توزیع شبکه در حالت کاربر جایگزین کند. از آنجا که WSL هسته یکسانی را در سراسر توزیعها به اشتراک میگذارد، همه توزیعهای دیگرِ در حال اجرا از این شبکه مجدداً استفاده میکنند. به همین ترتیب، هنگامی که آخرین نمونه ماشین با تنظیم true متوقف شود، پیکربندی شبکه اولیه بازیابی میگردد.
در برخی پیکربندیهای VPN، ممکن است ترافیک رابطهای شبکه جایگزین، از جمله دستگاههای شبکه ماشین مجازی قطع شود. با فعال کردن شبکه حالت کاربر، VPNها تمام ترافیک ماشین پادمن را به عنوان ترافیک سیستم میزبان مشاهده کرده و مشکل برطرف میشود.
--username
نام کاربری مورد استفاده برای اجرای دستورات در ماشین مجازی راه دور. مقدار پیشفرض برای FCOS برابر با core و برای Fedora (پیشفرض روی میزبانهای ویندوز) برابر با user است. باید با نام کاربری درون ایمیج ماشین مجازی حاصل مطابقت داشته باشد.
--volume, -v=source:target[:options]
اتصال (mount) یک حجم از مبدا به مقصد.
ایجاد یک نقطه اتصال. اگر /host-dir:/machine-dir به عنوان *source:target* مشخص شود، پادمن host-dir در سیستم میزبان را به machine-dir در ماشین مجازی پادمن متصل میکند.
گزینههای اضافی را میتوان به صورت یک رشته جداشده با کاما مشخص کرد. گزینههای شناختهشده عبارتند از: * ro: اتصال حجم بهصورت فقطخواندنی * rw: اتصال حجم بهصورت خواندن/نوشتن (پیشفرض) * security_model=[model]: مشخص کردن مدل امنیتی 9p (به پایین مراجعه کنید)
نکته: مقصدهای زیر برای حجمها ممنوع هستند: /bin, /boot, /dev, /etc, /home, /proc, /root, /run, /sbin, /sys, /tmp, /usr, و /var. زیرشاخههای این مسیرها مجاز هستند اما کاربران باید مراقب باشند که روی دایرکتوریهای حیاتی مانت نکنند زیرا ممکن است نتایج غیرمنتظرهای رخ دهد.
مدل امنیتی 9p مشخص میکند (https://wiki.qemu.org/Documentation/9psetup#Starting_the_Guest_directly) که سیستم فایل 9p پیش از ذخیرهسازی واقعی روی میزبان، چگونه برخی عملیاتهای سیستم فایل را ترجمه کند.
برای اینکه پیوندهای نمادین کار کنند، در مکاواس مدل امنیتی پیشفرض none است.
مقدار mapped-xattr مشخص میکند که 9p پیوندهای نمادین و برخی ویژگیهای فایل را به عنوان ویژگیهای توسعهیافته (extended attributes) روی میزبان ذخیره کند. این حالت زمانی مناسب است که میزبان و مهمان نیازی به تعامل مشترک بر روی سیستم فایل اشتراکی ندارند، اما برای دسترسی اشتراکی واقعی محدودیتهایی دارد؛ به ویژه، پیوندهای نمادین روی میزبان در مهمان قابل استفاده نیستند و بالعکس. اگر تعامل متقابل مورد نیاز است، مقدار none را انتخاب کنید، اما به یاد داشته باشید که مهمان قادر به انجام کارهایی که کاربر اجراکننده ماشین مجازی نمیتواند انجام دهد نیست؛ مانند ایجاد فایلهایی با مالکیت کاربر دیگر. استفاده از none تقریباً مطمئنترین گزینه برای حجمهای فقطخواندنی است.
مثال: -v "$HOME/git:$HOME/git:ro,security_model=none"
نقاط اتصال پیشفرض حجمها در containers.conf تعریف شدهاند. در صورت عدم تغییر، مقدار پیشفرض $HOME:$HOME است.
نکته درباره زیرسیستم ویندوز برای لینوکس (WSL) از آنجا که به صورت پیشفرض در WSL همه درایوها هنگام راهاندازی در /mnt مانت میشوند، ارسال --volume اضافی بوده و هیچ اثری ندارد. دایرکتوری خانگی میزبان برای درایو C: در مسیر /mnt/c/Users/<my username> متصل خواهد شد.
مثالها (EXAMPLES)
راهاندازی ماشین پیشفرض پادمن، با دریافت محتوا از اینترنت.
$ podman machine init
راهاندازی ماشین پادمن با نام مشخصشده با دریافت محتوا از اینترنت.
$ podman machine init myvm
راهاندازی و شروع به کار یک ماشین جدید پادمن در یک مرحله.
podman machine init --now
راهاندازی ماشین پیشفرض پادمن با دریافت محتوا از اینترنت در حالت با دسترسی ریشه (rootful). حالت پیشفرض بدون ریشه (rootless) است.
$ podman machine init --rootful
راهاندازی ماشین پیشفرض پادمن با تغییر اندازه دیسک، با دریافت محتوا از اینترنت.
$ podman machine init --disk-size 50
راهاندازی ماشین مشخصشده پادمن با تغییر اندازه حافظه رم، با دریافت محتوا از اینترنت.
$ podman machine init --memory=1024 myvm
راهاندازی ماشین پیشفرض پادمن با اتصال دایرکتوری /Users از سیستم میزبان به /Users درون ماشین مجازی.
$ podman machine init -v /Users:/Users
راهاندازی ماشین پیشفرض پادمن با گذردهی مستقیم یک دستگاه USB با گزینههای مشخصشده. فقط برای ماشینهای QEMU پشتیبانی میشود.
$ podman machine init --usb vendor=13d3,product=5406
راهاندازی ماشین پیشفرض پادمن با گذردهی مستقیم یک دستگاه USB با گزینههای مشخصشده. فقط برای ماشینهای QEMU پشتیبانی میشود.
$ podman machine init --usb bus=1,devnum=3
راهاندازی یک ماشین روی یک ارائهدهنده متفاوت با ارائهدهنده پیشفرض.
$ podman machine init --provider applehv
همچنین ببینید (SEE ALSO)
تاریخچه (HISTORY)
مارس ۲۰۲۱، در ابتدا توسط Ashley Cui گردآوری شد acui@redhat.com ⟨mailto:acui@redhat.com⟩