ساخت و اجرای کانتینر
دستور run برای اجرای یک کانتینر جدید از یک image مشخص استفاده میشود. این دستور مشابه docker run عمل میکند و علاوه بر اجرای کانتینر، میتوانید تنظیمات مختلفی مثل منابع، شبکه، و سیاستهای ریستارت را برای کانتینر تعریف کنید.
🧩 دستور کلی
{{baseURL}}/containers/run
📥 مشخصات درخواست (Request)
| فیلد | مقدار |
|---|---|
| Method | POST |
| Endpoint | /containers/run |
| Query Parameters | خیر |
| Content-Type | application/json |
⚙️ پارامترها (params)
بدنه (body)
{
"create": {
"image": "alpine",
"tag": "latest",
"containerId": "cont12",
"args": "tail -f /dev/null",
"restart": "always",
"restartDelay": 5,
"ip": "1.1.1.1"
}
}
فیلدهای ورودی (Options)
| فیلد | نوع داده | توضیح |
|---|---|---|
image | string | نام ایمیجی که کانتینر از آن ساخته میشود. |
tag | string | تگ مربوط به ایمیج (مثلاً latest). |
containerId | string | شناسه یا نام یکتا برای کانتینر. |
args | string | دستوری که بهعنوان فرآیند اصلی در کانتینر اجرا میشود. |
restart | string | سیاست ریاستارت کانتینر: none, always, unless-stopped, on-failure. |
restartDelay | number | زمان تأخیر بین تلاشهای ریاستارت (بر حسب ثانیه). |
restartWindow | number | بازه بررسی ریاستارتها برای محدودسازی. (اختیاری) |
maxAttempts | number | حداکثر تعداد تلاش برای ریاستارت. (اختیاری) |
env | array<string> | آرایهای از متغیرهای محیطی به صورت "KEY=VALUE" |
cpus | number | محدودسازی تعداد CPU ها. |
memory | string | محدودسازی میزان حافظه (مثلاً "512MB" یا "1GB"). |
mount | array<object> | مانت مسیرهای میزبان به کانتینر. |
capAdd | array<string> | لیست قابلیتهایی که به کانتینر اضافه میشوند. |
capDrop | array<string> | لیست قابلیتهایی که از کانتینر حذف میشوند. |
volume | array<string> | لیست volumeهایی که باید استفاده شوند. |
network | string | نام شبکهای که کانتینر در آن عضو میشود. |
ip | string | آدرس IP اختصاصی برای کانتینر. |
publish | string | نگاشت پورت بهصورت "hostPort:containerPort". |
hostname | string | تنظیم نام میزبان برای کانتینر. |
pidFile | string | مسیر فایل ذخیره PID کانتینر. |
config | string | مسیر فایل کانفیگ جایگزین (فقط فرمت OCI). |
consoleSocket | string | مسیر سوکت برای اتصال به ترمینال کانتینر. |
مثال کاملتر:
{
"create": {
"image": "nginx",
"tag": "1.25",
"containerId": "web-server",
"args": "",
"restart": "unless-stopped",
"restartDelay": 10,
"restartWindow": 60,
"maxAttempts": 5,
"env": ["ENV=production", "PORT=80"],
"cpus": 2,
"memory": "1g",
"mount": [
{
"type": "bind",
"source": "/host/data",
"target": "/data"
}
],
"capAdd": ["NET_ADMIN"],
"capDrop": ["MKNOD"],
"volume": ["data-vol:/app/data"],
"network": "frontend-net",
"ip": "192.168.10.10",
"publish": "8080:80",
"hostname": "my-nginx",
"pidFile": "/var/run/nginx.pid",
"config": "/etc/container/config.json",
"consoleSocket": "/var/run/container.sock"
}
}
روش استفاده (How to Use)
POST {{baseURL}}/containers/run
{
"create": {
"image": "alpine",
"tag": "latest",
"containerId" : "cont12",
"args": "tail -f /dev/null",
"restart":"always",
"restartDelay":5,
"network": "my-br1",
"ip": "1.1.1.1"
}
}
پاسخ به صورت یک آیدی است که میتوان از وضعیت آن در هر لحظه آگاه شد.
{
"meta": {
"shamsiDate": "14040515110648579",
"requestId": "75aa67e6-4f6d-44e4-be42-9a683f5f1a91"
},
"data": "af884783-92c0-4567-8f15-c5487d3e5c5f"
}
وضعیت پاسخ (Status Codes)
| کد | معنی |
|---|---|
200 OK | درخواست با موفقیت انجام شد |
نکات مهم
⚙️ خطاهای رایج
| خطا | توضیح |
|---|---|
containerNotFound | زمانی که کانتینر وجود نداشته باشد |
containerAlreadyExist | زمانی که کانتینر وجود داشته باشد |