ساخت و اجرای کانتینر
دستور run برای اجرای یک کانتینر جدید از یک image مشخص استفاده میشود. این دستور مشابه docker run عمل میکند و علاوه بر اجرای کانتینر، میتوانید تنظیمات مختلفی مثل منابع، شبکه، و سیاستهای ریستارت را برای کانتینر تعریف کنید.
🧩 دستور کلی
k3 container run [options] <containerId> <imageTag>
containerId: شناسهای که برای کانتینر خود انتخاب میکنید.imageTag: نام یا تگ ایمیجی که میخواهید کانتینر از آن ساخته شود.
⚙️ گزینهها (Options)
| آپشن | توضیح |
|---|---|
--console-socket <SOCK> | مسیر سوکت برای ارتباط با ترمینال کانتینر. |
-f, --config <FILE> | مسیر فایل کانفیگ جایگزین برای تنظیمات کانتینر.این آپشن فقط کانفیق های oci را قبول میکند. |
--no-new-keyring | استفاده از session key قبلی (برای تنظیمات امنیتی خاص). |
--no-pivot | غیرفعال کردن تغییر ریشهی فایلسیستم (pivot_root). (درحال توسعه) |
--no-subreaper | غیرفعال کردن ساخت فرآیند subreaper (در حال حاضر نادیده گرفته میشود). |
--pid-file <FILE> | مسیر فایلی که شناسهی فرآیند کانتینر در آن ذخیره میشود. |
--hostname <HOSTNAME> | تنظیم نام میزبان (hostname) برای کانتینر. |
--args <string> | دستوری که بهعنوان فرآیند اصلی کانتینر اجرا میشود. |
--restart <POLICY> | سیاست ریستارت کانتینر: none, always, unless-stopped, on-failure. |
--restartDelay <NUM> | مدت زمان تأخیر قبل از ریستارت. |
--restartWindow <NUM> | بازهی زمانی بررسی تعداد ریستارتها. |
--maxAttempts <NUM> | حداکثر تعداد تلاش برای ریستارت. |
-e, --env [KEY=VALUE...] | تنظیم متغیرهای محیطی. (میتواند چند بار تکرار شود.) |
--cpus <NUM> | محدود کردن تعداد CPU قابل استفاده برای کانتینر. |
--memory <SIZE> | محدود کردن میزان حافظهی قابل استفاده برای کانتینر. |
--mount [type=bind,source=<hostPath>,target=<containerPath>...] | مانت کردن مسیرهای میزبان در کانتینر. در حال حاضر فقط دسترسی های کامل به آن داده میشود. |
--privileged | دادن دسترسی کامل (privileged) به کانتینر. (درحال توسعه) |
--cap-add [CAP...] | اضافه کردن قابلیتهای خاص لینوکس به کانتینر. |
--cap-drop [CAP...] | حذف قابلیتهای پیشفرض لینوکس از کانتینر. |
-v, --volume [item...] | تعریف volume برای کانتینر. |
-n, --network <Network name> | اضافه کردن کانتینر به یک شبکه خاص. |
--ip <IPv4> | اختصاص یک آدرس IP ثابت به کانتینر. |
-p, --publish <hostPort:containerPort> | نگاشت پورت میزبان به پورت کانتینر. |
--mac <MAC> | نسبت دادن یک مک آدرس به خصوص به کانتینر |
--debug | حالتی است که میخواهید بررسی کامل روی آن انجام دهید یا به صورت وبهوک ارسال شود |
-h, --help | نمایش راهنمای دستور. |
📥 مثالهای کاربردی
✅ اجرای سادهی یک کانتینر:
k3 container run myContainer ubuntu:latest --args "tail -f /dev/null"
✅ اجرای کانتینر با متغیر محیطی:
k3 container run -e MODE=dev myContainer ubuntu:latest
✅ اجرای کانتینر با محدودیت CPU و حافظه:
k3 container run --cpus 1 --memory 512MB myContainer ubuntu:latest
✅ اجرای کانتینر با mount کردن پوشه:
k3 container run --mount type=bind,source=/host/data,target=/container/data myContainer ubuntu:latest
✅ اجرای کانتینر با سیاست ریستارت:
k3 container run --restart always --restartDelay 5 myContainer ubuntu:latest
نکات مهم
با این دستور، هم کانتینر ساخته میشود و هم بلافاصله اجرا میشود.
اگر نیاز به تعریف پیشرفتهتر کانتینر دارید میتوانید ابتدا از create برای تعریف و بعد از start برای اجرا استفاده کنید.
اگر از گزینه --restart استفاده کنید، کانتینر طبق سیاست مشخص شده بهصورت خودکار ریستارت خواهد شد.
تست جامع
#!/bin/bash
echo "Starting k3 container run tests..."
echo "[1] Running a simple container"
sudo k3 container run myContainer ubuntu:latest --args "tail -f /dev/null"
echo
echo "[2] Running container with environment variable"
sudo k3 container run -e MODE=dev myContainer ubuntu:latest
echo
echo "[3] Running container with CPU and memory limits"
sudo k3 container run --cpus 1 --memory 512MB myContainer ubuntu:latest
echo
echo "[4] Running container with mounted folder"
sudo k3 container run --mount type=bind,source=/host/data,target=/container/data myContainer ubuntu:latest
echo
echo "[5] Running container with restart policy"
sudo k3 container run --restart always --restartDelay 5 myContainer ubuntu:latest
echo
echo "All run tests completed."
🆘 دریافت راهنما
برای مشاهدهی راهنمای کامل این دستور در خط فرمان:
k3 container list -h