اجرای سرویس در پسزمینه
-d اجرا را جدا از ترمینال ادامه میدهد و -p پورت میزبان را به پورت container وصل میکند.
docker run -d --name web -p 8080:80 nginx:alpine
دستورها و اصول ساخت image، اجرای container و نگهداری امن محیط توسعه. Container را از یک image اجرا کنید و وضعیت، log و دسترسی آن را با فرمانهای محدود و مشخص بررسی کنید. پیش از انتشار پورت یا mount کردن فایل، مقصد و دادهٔ میزبان را کنترل کنید. Image را از منبع معتبر دریافت یا با Dockerfile بسازید، نسخهٔ مشخص برای آن انتخاب کنید و artifact نهایی را در registry منتشر کنید. Build context را کوچک نگه دارید و اطلاعات محرمانه را در لایههای image قرار ندهید. از این صفحه بهعنوان مرجع سریع استفاده کنید و مثالها و نکتهها را با نسخهٔ ابزار، نیاز و شرایط واقعی پروژهٔ خود تطبیق دهید.
-d اجرا را جدا از ترمینال ادامه میدهد و -p پورت میزبان را به پورت container وصل میکند.
docker run -d --name web -p 8080:80 nginx:alpineبرای ابزارهای تشخیصی از -it استفاده کنید؛ Shell موجود به image وابسته است و همهٔ imageها bash ندارند.
docker run --rm -it alpine:3.21 shdocker exec -it web shps فهرست containerها را نشان میدهد؛ -a موارد متوقفشده را نیز اضافه میکند.
docker psdocker ps -alogs و stats برای تشخیص وضعیت هستند؛ خروجی log را پیش از اشتراکگذاری از دادهٔ محرمانه پاک کنید.
docker logs --tail 100 webdocker stats webdocker port webdocker inspect webپس از stop، rm خود container را حذف میکند؛ volumeهای جداگانه بهطور پیشفرض با آن حذف نمیشوند.
docker stop webdocker start webdocker restart webdocker rm webبرای سرویسها سقف منابع را با توجه به ظرفیت میزبان و نیاز واقعی تنظیم و پایش کنید.
docker run -d --name api --cpus="1.5" --memory="512m" example/api:1.0tag را صریح انتخاب کنید؛ حذف image ممکن است containerهای وابسته را تحت تأثیر قرار دهد.
docker image lsdocker pull nginx:1.27-alpinedocker image rm nginx:1.27-alpine-f فایل Dockerfile و -t نام و tag خروجی را مشخص میکند؛ نقطه، build context جاری است.
docker build -t studio/web:1.0 .docker build -f deploy/Dockerfile -t studio/web:1.0 .history لایههای build و inspect metadata image را نشان میدهد.
docker image history studio/web:1.0docker image inspect studio/web:1.0از credential helper یا ورود امن استفاده کنید؛ رمز را در فرمان یا Dockerfile ننویسید.
docker image tag studio/web:1.0 registry.example.com/team/web:1.0docker login registry.example.comdocker image push registry.example.com/team/web:1.0save/load image را بهصورت archive منتقل میکنند؛ این فرمانها با export/import filesystem یک container متفاوتاند.
docker image save -o web-image.tar studio/web:1.0docker image load -i web-image.tarnamed volume از چرخهٔ عمر container جدا است و در بازسازی container باقی میماند.
docker volume create app-datadocker run -d --name app -v app-data:/var/lib/app example/app:1.0docker volume lsdocker volume inspect app-dataBind mount پوشهٔ میزبان را در container در دسترس میگذارد؛ برای محیط توسعه میتوان آن را فقطخواندنی کرد.
docker run --rm -v "$PWD:/workspace:ro" alpine:3.21 ls /workspaceشبکهٔ اختصاصی امکان نامیابی containerها و جداسازی ترافیک را فراهم میکند.
docker network create app-netdocker network lsdocker network inspect app-netdocker run -d --name api --network app-net example/api:1.0برای اتصال container موجود از connect استفاده کنید و پس از پایان نیاز آن را disconnect کنید.
docker network connect app-net workerdocker network disconnect app-net workerconfig فایل Compose را resolve میکند؛ up سرویسها را میسازد و اجرا میکند.
docker compose configdocker compose up -dنام سرویس را میتوان برای محدودکردن log بهکار برد؛ -f خروجی تازه را دنبال میکند.
docker compose psdocker compose logs --tail 100docker compose logs -f apibuild imageهای تعریفشده را بازسازی میکند؛ down container و شبکهٔ ساختهشده را جمع میکند اما volumeها را نگه میدارد.
docker compose builddocker compose up -ddocker compose downsystem prune منابع dangling را پاک میکند؛ افزودن -a imageهای بدون container را نیز هدف میگیرد.
docker system dfdocker system pruneپیش از prune کردن container، image یا volume، بررسی کنید که منبع دیگر برای restore یا بازگشت لازم نباشد.
docker container prunedocker image prunedocker volume lscontainer را با کاربر غیر root، image قابل اعتماد و دسترسی حداقلی اجرا کنید؛ secret را در image، build argument یا log ذخیره نکنید.
FROM node:22-alpineWORKDIR /appCOPY --chown=node:node package*.json ./RUN npm ci --omit=devCOPY --chown=node:node . .USER nodeCMD ["node", "server.js"]image را با Dockerfile تکرارپذیر بسازید و base image معتبر و محدود انتخاب کنید.
از .dockerignore برای حذف cache، secrets و فایلهای غیرضروری بهره ببرید.
برای کاهش حجم و سطح حمله، build چندمرحلهای و کاربر غیر root را در نظر بگیرید.
پورت را با -p host:container فقط در محدودهٔ لازم منتشر کنید.
دادهٔ پایدار را در volume نگه دارید، نه در لایهٔ زودگذر container.
متغیر محیطی را در زمان اجرا بدهید و secret را داخل image نسازید.
سرویسهای وابسته را با Compose و healthcheck قابل مشاهده کنید.
logها را به stdout/stderr بفرستید تا سامانهٔ اجرا آنها را جمع کند.
tag نسخهدار و immutable انتخاب کنید و آسیبپذیری image را اسکن کنید.
container را با منابع، دسترسی و capability حداقلی اجرا کنید.
برای build کوچکتر از multi-stage استفاده کنید و فقط artifact لازم را به image نهایی منتقل کنید.
secret را با build argument یا لایهٔ image ذخیره نکنید؛ از secret mount زمان build یا runtime استفاده کنید.
پیش از docker system prune یا docker volume prune منابع و نیاز backup را بررسی کنید؛ فرمان prune میتواند دادهٔ بدون اتصال را پاک کند.
Image را با tag مشخص و منبع معتبر انتخاب کنید و container را با کاربر و دسترسی حداقلی اجرا کنید.