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

ساخت کانتینر

دستور create برای ساخت تعریف یک کانتینر استفاده می‌شود. این دستور کانتینر را اجرا نمی‌کند، فقط کانفیگ آن را آماده می‌کند که بعداً بتوان کانتینر را با دستور start اجرا کرد.

🧩 دستور کلی


📥 مشخصات درخواست (Request)

فیلدمقدار
MethodPOST
Endpoint/containers/create
Query Parametersخیر
Content-Typeapplication/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)

فیلدنوع دادهتوضیح
imagestringنام ایمیجی که کانتینر از آن ساخته می‌شود.
tagstringتگ مربوط به ایمیج (مثلاً latest).
containerIdstringشناسه یا نام یکتا برای کانتینر.
argsstringدستوری که به‌عنوان فرآیند اصلی در کانتینر اجرا می‌شود.
restartstringسیاست ری‌استارت کانتینر: none, always, unless-stopped, on-failure.
restartDelaynumberزمان تأخیر بین تلاش‌های ری‌استارت (بر حسب ثانیه).
restartWindownumberبازه بررسی ری‌استارت‌ها برای محدودسازی. (اختیاری)
maxAttemptsnumberحداکثر تعداد تلاش برای ری‌استارت. (اختیاری)
envarray<string>آرایه‌ای از متغیرهای محیطی به صورت "KEY=VALUE"
cpusnumberمحدودسازی تعداد CPU ها.
memorystringمحدودسازی میزان حافظه (مثلاً "512MB" یا "1GB").
mountarray<object>مانت مسیرهای میزبان به کانتینر.
capAddarray<string>لیست قابلیت‌هایی که به کانتینر اضافه می‌شوند.
capDroparray<string>لیست قابلیت‌هایی که از کانتینر حذف می‌شوند.
volumearray<string>لیست volumeهایی که باید استفاده شوند.
networkstringنام شبکه‌ای که کانتینر در آن عضو می‌شود.
ipstringآدرس IP اختصاصی برای کانتینر.
publishstringنگاشت پورت به‌صورت "hostPort:containerPort".
hostnamestringتنظیم نام میزبان برای کانتینر.
pidFilestringمسیر فایل ذخیره PID کانتینر.
configstringمسیر فایل کانفیگ جایگزین (فقط فرمت OCI).
consoleSocketstringمسیر سوکت برای اتصال به ترمینال کانتینر.

مثال کامل‌تر:

{
"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زمانی که کانتینر وجود داشته باشد

🆘 دریافت راهنما