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

اجرای کانتینر

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