اجرای دستور در کانتینر
دستور exec برای اجرای یک فرمان جدید در یک کانتینر در حال اجرا استفاده میشود. این دستور به شما اجازه میدهد بدون توقف یا تغییر وضعیت کانتینر، یک برنامه یا دستور دلخواه را داخل آن اجرا کنید.
🧩 دستور کلی
k3 container exec [options] <containerId> [command...]
containerId: شناسه کانتینری که میخواهید دستور در آن اجرا شود.command: (اختیاری) دستوری که میخواهید در کانتینر اجرا شود. اگر دستور وارد نشود، به صورت پیشفرض به شل کانتینر وارد میشوید (در صورت فعال بودن TTY).
⚙️ گزینهها (Options)
| گزینه کوتاه | گزینه بلند | توضیح |
|---|---|---|
-i | --interactive | ورودی کاربر (STDIN) را باز نگه میدارد حتی اگر متصل نباشد. |
-t | --tty | یک ترمینال مجازی (pseudo-TTY) اختصاص میدهد. |
-d | --detach | اجرای دستور به صورت پسزمینه. |
-u | --user <userNameOrID> | اجرای دستور با کاربر خاص داخل کانتینر. (درحال توسعه) |
-c | --cwd <path> | تنظیم دایرکتوری کاری داخل کانتینر. |
--console-socket <SOCK> | مسیر سوکتی که ترمینال کانتینر به آن متصل میشود. (درحال توسعه) | |
--apparmor <VALUE> | تعیین پروفایل AppArmor برای پردازش. | |
-h | --help | نمایش راهنمای کامل دستور. |
📥 مثالهای کاربردی
✅ اجرای bash به صورت interactive و اختصاص TTY:
k3 container exec -it mycontainer bash
✅ اجرای دستور ls در دایرکتوری /home داخل کانتینر:
k3 container exec -c /home mycontainer ls
✅ اجرای دستور به صورت پسزمینه:
k3 container exec -d mycontainer sleep 60
✅ اجرای دستور با کاربر خاص:
k3 container exec -u root mycontainer whoami
نکات مهم
برای داشتن یک شل تعاملی کامل، باید هم -i (ورودی باز) و هم -t (ترمینال مجازی) فعال باشند.
اگر از --detach استفاده کنید، خروجی دستور را نخواهید دید مگر این که جداگانه آن را بررسی کنید.
با استفاده از --user میتوانید دستورات را با سطح دسترسی محدود یا ادمین اجرا کنید. (درحال توسعه)
گزینه --cwd دایرکتوری پیشفرض اجرای دستور را داخل کانتینر تعیین میکند.
تست جامع
#!/bin/bash
echo "Starting k3 container exec tests..."
echo "[1] Executing interactive bash (-it)"
sudo k3 container exec -it mycontainer bash
echo
echo "[2] Executing 'ls' in /home (-c /home)"
sudo k3 container exec -c /home mycontainer ls
echo
echo "[3] Executing 'sleep 60' in background (-d)"
sudo k3 container exec -d mycontainer sleep 60
echo
echo "[4] Executing 'whoami' as root (-u root)"
sudo k3 container exec -u root mycontainer whoami
echo
echo "All exec tests completed."
🆘 دریافت راهنما
برای مشاهدهی راهنمای کامل این دستور در خط فرمان:
k3 container list -h