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

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

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