پرش به مطلب اصلی

اجرای دستور در کانتینر

دستور 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