ساخت کانتینر
دستور create برای ساخت تعریف یک کانتینر استفاده میشود. این دستور کانتینر را اجرا نمیکند، فقط کانفیگ آن را آماده میکند که بعداً بتوان کانتینر را با دستور start اجرا کرد.
🧩 دستور کلی
{{baseURL}}/containers/create
📥 مشخصات درخواست (Request)
| فیلد | مقدار |
|---|---|
| Method | POST |
| Endpoint | /containers/create |
| 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/create
{
"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 | زمانی که کانتینر وجود داشته باشد |