اجرای کانتینر
دستور start برای راهاندازی کانتینری استفاده میشود که قبلاً ساخته شده اما هنوز اجرا نشده است. این دستور تنها روی کانتینرهایی که وضعیت آنها created یا stopped باشد عمل میکند.
🧩 دستور کلی
k3 container start [options] <containerId>
آرگومانها:
containerId: شناسهی کانتینری که میخواهید اجرا کنید
⚙️ گزینهها (Options)
| گزینه کوتاه | گزینه بلند | توضیح |
|---|---|---|
-t | --time <seconds> | مدتزمانی (بر حسب ثانیه) که سیستم منتظر شروع اجرای کانتینر میماند |
--debug | حالت دیباگ برای دریافت اطلاعات تفصیلی در هنگام اجرای دستور | |
-h | --help | نمایش راهنمای دستور |
📥 مثالهای کاربردی
✅ اجرای یک کانتینر با شناسه:
k3 container start cont2
خروجی نمونه:
Container started successfully
✅ اجرای کانتینر با حالت دیباگ:
k3 container start --debug cont2
خروجی نمونه:
Container started successfully:
Using debug verbosity
Loading container from config file: /run/crun/cont2/config.json
Opening hooks output
⏱ اجرای کانتینر با زمان انتظار مشخص:
k3 container start -t 10 cont2
خطاها و راهحلها
خطا: کانتینر وجود ندارد (NOT_FOUND)
پیام خطا:
{
"type": "NOT_FOUND",
"message": "No container exists with the specified name or ID prefix.",
"statusCode": 404
}
دلایل:
- شناسهی کانتینر نادرست است
- کانتینر قبلاً حذف شده است
- کانتینر هرگز ساخته نشده است
راهحل: ابتدا لیست کانتینرهای موجود را بررسی کنید:
k3 container list --all
سپس شناسه صحیح را برای start استفاده کنید:
k3 container start <correct-container-id>
خطا: کانتینر در وضعیت نامناسب است (INVALID_STATE)
پیام خطا:
{
"type": "INVALID_STATE",
"message": "Container is not in 'created' or 'stopped' state.",
"statusCode": 400,
"detail": {
"currentState": "running"
}
}
دلایل:
- کانتینر قبلاً در حال اجرا است (
running) - کانتینر در حالت توقف موقتی است (
paused) - کانتینر در وضعیت دیگری است
راهحل:
اگر کانتینر در حال اجرا است:
k3 container stop mycontainer
k3 container start mycontainer
اگر کانتینر pause شده است:
k3 container resume mycontainer
اگر میخواهید وضعیت کانتینر را بررسی کنید:
k3 container list --all | grep mycontainer
تفاوت بین create، start و run
سه دستور مختلف برای کار با کانتینرها وجود دارد:
| دستور | عملکرد | وضعیت پایانی |
|---|---|---|
| create | تنها تعریف و ساختار کانتینر را ایجاد میکند (کانتینر اجرا نمیشود) | created |
| start | کانتینری که قبلاً ساخته شده است را اجرا میکند | running |
| run | ترکیب دو دستور create و start (کانتینر را ایجاد و بلافاصله اجرا میکند) | running |
مثال:
# روش ۱: استفاده از create و start جداگانه
k3 container create mycontainer alpine:latest --args "sleep 60"
k3 container start mycontainer
# روش ۲: استفاده از run (کوتاهتر)
k3 container run mycontainer alpine:latest --args "sleep 60"
نکات مهم
-
دستور
startتنها روی کانتینرهایی با وضعیتcreatedیاstoppedعمل میکند. -
دستور
startکانتینر را اجرا میکند و بلافاصله بازمیگردد (منتظر خاتمه کانتینر نمیماند). -
برای بررسی وضعیت کانتینر قبل از اجرا، از دستور زیر استفاده کنید:
k3 container list --all -
برای مشاهدهی لاگهای کانتینر پس از اجرا، از دستور
k3 container logاستفاده کنید:k3 container log mycontainer -
اگر کانتینر توقف موقتی (paused) است، برای ادامهی اجرا از دستور
resumeاستفاده کنید (نهstart):k3 container resume paused-container -
شناسه کانتینر میتواند نام کامل یا بخشی از آن باشد (prefix matching).
📌 پیشنهاد: برای سناریوهایی که نیاز به ایجاد و اجرای فوری کانتینر است، از دستور
k3 container runاستفاده کنید که میتواند تمام این مراحل را یکجا انجام دهد.
تست جامع
#!/bin/bash
echo "Starting k3 container start tests..."
echo "[1] Creating a test container"
sudo k3 container create test-cont alpine:latest --args 'sleep 3600'
echo
echo "[2] Starting the created container"
sudo k3 container start test-cont
echo
echo "[3] Checking container status after start"
sudo k3 container list --all | grep test-cont
echo
echo "[4] Trying to start an already running container (should fail)"
sudo k3 container start test-cont
echo
echo "[5] Stopping the container"
sudo k3 container stop test-cont
echo
echo "[6] Starting the stopped container"
sudo k3 container start test-cont
echo
echo "[7] Starting with debug flag"
sudo k3 container stop test-cont
sudo k3 container start --debug test-cont
echo
echo "[8] Starting with timeout"
sudo k3 container stop test-cont
sudo k3 container start -t 5 test-cont
echo
echo "[9] Trying to start non-existent container (should fail)"
sudo k3 container start non-existent-cont
echo
echo "[10] Pausing a container and trying to start it"
sudo k3 container pause test-cont
sudo k3 container start test-cont
echo
echo "[11] Resuming a paused container"
sudo k3 container resume test-cont
echo
echo "[12] Listing all containers at the end"
sudo k3 container list --all
echo
echo "All start tests completed."
🆘 دریافت راهنما
برای مشاهدهی راهنمای کامل این دستور در خط فرمان:
k3 container start -h