runc-spec(8) System Manager's Manual runc-spec(8)

runc-spec - ایجاد یک فایل مشخصات جدید

runc spec [گزینه ...]

دستور spec یک فایل مشخصات جدید با نام config.json برای بسته (bundle) ایجاد می‌کند.

فایل مشخصات تولیدشده تنها یک فایل اولیه است. برای دستیابی به نتایج دلخواه، ویرایش این فایل مشخصات الزامی است. به عنوان مثال، فایل مشخصات تازه‌تولیدشده شامل پارامتر args است که در ابتدا برای فراخوانی دستور sh هنگام راه‌اندازی کانتینر تنظیم شده است. فراخوانی sh ممکن است برای یک کانتینر ubuntu یا busybox کار کند، اما برای کانتینرهایی که فاقد باینری sh هستند کار نخواهد کرد.

تنظیم path به عنوان ریشه دایرکتوری بسته (bundle).
تولید پیکربندی برای یک کانتینر بدون ریشه (rootless). توجه داشته باشید که این گزینه کاملاً با گزینه سراسری --rootless متفاوت است.

برای اجرای یک کانتینر ساده "hello-world"، لازم است پارامتر args در فایل مشخصات برای فراخوانی hello تنظیم شود. این کار را می‌توان با استفاده از sed(1)، jq(1) یا یک ویرایشگر متن انجام داد.

دستورات زیر اقدامات زیر را انجام می‌دهند:
- ایجاد یک بسته (bundle) برای hello-world؛
- تغییر دستور اجرایی درون کانتینر به /hello با استفاده از jq(1)؛
- اجرای دستور hello در یک کانتینر جدید hello-world با نام container1.

mkdir hello
cd hello
docker pull hello-world
docker export $(docker create hello-world) > hello-world.tar
mkdir rootfs
tar -C rootfs -xf hello-world.tar
runc spec
jq '.process.args |= ["/hello"]' < config.json > new.json
mv -f new.json config.json
runc run container1

در دستور run بالا، container1 نام نمونه کانتینری است که راه‌اندازی می‌کنید. نامی که برای نمونه کانتینر مشخص می‌کنید باید روی میزبان شما یکتا باشد.

یک راهکار جایگزین برای تولید پیکربندی مشخصات سفارشی، استفاده از oci-runtime-tool است؛ زیردستور oci-runtime-tool generate دارای گزینه‌های متعددی است که می‌توان از آن‌ها برای انجام هرگونه سفارشی‌سازی دلخواه استفاده کرد. برای کسب اطلاعات بیشتر، runtime-tools ⟨https://github.com/opencontainers/runtime-tools⟩ را ببینید.

هنگام راه‌اندازی کانتینر از طریق runc، معمولاً به مجوزهای کاربر ریشه (root) نیاز است. اگر از قبل به عنوان کاربر ریشه اجرا نمی‌کنید، می‌توانید از sudo(8) استفاده کنید، برای مثال:

sudo runc start container1

به عنوان روشی دیگر، می‌توانید یک کانتینر بدون ریشه (rootless) را راه‌اندازی کنید که توانایی اجرا بدون مجوزهای کاربر ریشه را دارد. برای اینکه این مورد کار کند، فایل مشخصات باید بر این اساس تنظیم شود. می‌توانید گزینه --rootless را به این دستور ارسال کنید تا یک فایل مشخصات بدون ریشه مناسب ایجاد گردد.

runc-run(8), runc(8).