<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alikaravi.ir/index.php?action=history&amp;feed=atom&amp;title=Docker</id>
	<title>Docker - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alikaravi.ir/index.php?action=history&amp;feed=atom&amp;title=Docker"/>
	<link rel="alternate" type="text/html" href="https://wiki.alikaravi.ir/index.php?title=Docker&amp;action=history"/>
	<updated>2026-10-11T09:14:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.alikaravi.ir/index.php?title=Docker&amp;diff=209&amp;oldid=prev</id>
		<title>Karavi: Created page with &quot;{{DISPLAYTITLE:راهنمای جامع Docker و مانیتورینگ Docker}} __TOC__  &#039;&#039;&#039;راهنمای جامع Docker و مانیتورینگ Docker&#039;&#039;&#039; یک مرجع عملی برای نصب، اجرای امن، مدیریت منابع و پایش کانتینرها است. دستورها برای Linux/macOS نوشته شده‌اند؛ در Windows می‌توان آن‌ها را در WSL2 یا Docker Desktop اجرا کرد.  == پیش‌نیازها و نکات...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.alikaravi.ir/index.php?title=Docker&amp;diff=209&amp;oldid=prev"/>
		<updated>2026-08-29T12:05:44Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{DISPLAYTITLE:راهنمای جامع Docker و مانیتورینگ Docker}} __TOC__  &amp;#039;&amp;#039;&amp;#039;راهنمای جامع Docker و مانیتورینگ Docker&amp;#039;&amp;#039;&amp;#039; یک مرجع عملی برای نصب، اجرای امن، مدیریت منابع و پایش کانتینرها است. دستورها برای Linux/macOS نوشته شده‌اند؛ در Windows می‌توان آن‌ها را در WSL2 یا Docker Desktop اجرا کرد.  == پیش‌نیازها و نکات...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:راهنمای جامع Docker و مانیتورینگ Docker}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;راهنمای جامع Docker و مانیتورینگ Docker&amp;#039;&amp;#039;&amp;#039; یک مرجع عملی برای نصب، اجرای امن، مدیریت منابع و پایش کانتینرها است. دستورها برای Linux/macOS نوشته شده‌اند؛ در Windows می‌توان آن‌ها را در WSL2 یا Docker Desktop اجرا کرد.&lt;br /&gt;
&lt;br /&gt;
== پیش‌نیازها و نکات ایمنی ==&lt;br /&gt;
* بیشتر دستورها به دسترسی Docker نیاز دارند. در Linux افزودن کاربر به گروه docker عملاً دسترسی سطح بالا می‌دهد؛ این موضوع را مانند دسترسی مدیریتی در نظر بگیرید.&lt;br /&gt;
* پیش از حذف image، volume یا داده، نام و وابستگی آن را بررسی کنید.&lt;br /&gt;
* برای محیط Production، از tagهای مشخص، healthcheck، محدودیت منابع، لاگ چرخشی و backup استفاده کنید.&lt;br /&gt;
* خروجی‌های نمونه در این صفحه تا حد ممکن به شکل جدول نمایش داده شده‌اند؛ خروجی واقعی به نسخه و وضعیت میزبان وابسته است.&lt;br /&gt;
&lt;br /&gt;
== نصب و بررسی اولیه ==&lt;br /&gt;
مراحل رسمی نصب را از مستندات توزیع خود دنبال کنید. پس از نصب:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker version&lt;br /&gt;
docker info&lt;br /&gt;
docker run --rm hello-world&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! دستور !! کاربرد&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;docker version&amp;lt;/code&amp;gt; || نسخه Client و Server را نشان می‌دهد.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;docker info&amp;lt;/code&amp;gt; || وضعیت daemon، storage driver، تعداد منابع و محدودیت‌های کلی را نشان می‌دهد.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;docker run --rm hello-world&amp;lt;/code&amp;gt; || نصب و دسترسی به daemon را آزمایش می‌کند.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مفاهیم پایه ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! مفهوم !! توضیح&lt;br /&gt;
|-&lt;br /&gt;
| Image || الگوی فقط‌خواندنی برای ساخت کانتینر.&lt;br /&gt;
|-&lt;br /&gt;
| Container || نمونه در حال اجرای یک image با filesystem و process مستقل.&lt;br /&gt;
|-&lt;br /&gt;
| Registry || مخزن image مانند Docker Hub یا registry خصوصی.&lt;br /&gt;
|-&lt;br /&gt;
| Network || مسیر ارتباطی بین کانتینرها و میزبان.&lt;br /&gt;
|-&lt;br /&gt;
| Volume || محل پایدار برای نگهداری داده خارج از چرخه عمر کانتینر.&lt;br /&gt;
|-&lt;br /&gt;
| Docker daemon || سرویس پس‌زمینه‌ای که image، container و network را مدیریت می‌کند.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مدیریت Image ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker pull nginx:alpine&lt;br /&gt;
docker image ls&lt;br /&gt;
docker image inspect nginx:alpine&lt;br /&gt;
docker image history nginx:alpine&lt;br /&gt;
docker tag nginx:alpine registry.example.com/team/nginx:1.0&lt;br /&gt;
docker image rm nginx:alpine&lt;br /&gt;
docker image prune&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! عملیات !! دستور !! نکته&lt;br /&gt;
|-&lt;br /&gt;
| دریافت || &amp;lt;code&amp;gt;docker pull IMAGE:TAG&amp;lt;/code&amp;gt; || tag مشخص استفاده کنید؛ از &amp;lt;code&amp;gt;latest&amp;lt;/code&amp;gt; برای انتشار حساس پرهیز کنید.&lt;br /&gt;
|-&lt;br /&gt;
| فهرست || &amp;lt;code&amp;gt;docker image ls&amp;lt;/code&amp;gt; || imageهای محلی را نشان می‌دهد.&lt;br /&gt;
|-&lt;br /&gt;
| بررسی || &amp;lt;code&amp;gt;docker image inspect IMAGE&amp;lt;/code&amp;gt; || metadata و digest را نشان می‌دهد.&lt;br /&gt;
|-&lt;br /&gt;
| حذف || &amp;lt;code&amp;gt;docker image rm IMAGE&amp;lt;/code&amp;gt; || فقط imageهای بدون وابستگی را حذف کنید.&lt;br /&gt;
|-&lt;br /&gt;
| پاک‌سازی || &amp;lt;code&amp;gt;docker image prune&amp;lt;/code&amp;gt; || imageهای dangling را حذف می‌کند.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ساخت Image با Dockerfile ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;dockerfile&amp;quot;&amp;gt;&lt;br /&gt;
FROM python:3.12-slim&lt;br /&gt;
WORKDIR /app&lt;br /&gt;
COPY requirements.txt .&lt;br /&gt;
RUN pip install --no-cache-dir -r requirements.txt&lt;br /&gt;
COPY . .&lt;br /&gt;
EXPOSE 8000&lt;br /&gt;
CMD [&amp;quot;python&amp;quot;, &amp;quot;-m&amp;quot;, &amp;quot;http.server&amp;quot;, &amp;quot;8000&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker build --pull -t sample-app:1.0 .&lt;br /&gt;
docker image inspect sample-app:1.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== مدیریت Container ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -d --name web -p 8080:80 nginx:alpine&lt;br /&gt;
docker ps&lt;br /&gt;
docker ps -a&lt;br /&gt;
docker start web&lt;br /&gt;
docker stop web&lt;br /&gt;
docker restart web&lt;br /&gt;
docker rename web web-old&lt;br /&gt;
docker rm web-old&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Network ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker network ls&lt;br /&gt;
docker network create app-net&lt;br /&gt;
docker network inspect app-net&lt;br /&gt;
docker network connect app-net web&lt;br /&gt;
docker network disconnect app-net web&lt;br /&gt;
docker network rm app-net&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
در Compose، سرویس‌ها معمولاً با نام سرویس یکدیگر را resolve می‌کنند؛ مثلاً &amp;lt;code&amp;gt;postgres:5432&amp;lt;/code&amp;gt;، نه &amp;lt;code&amp;gt;localhost&amp;lt;/code&amp;gt;. استفاده از network اختصاصی، جداسازی سرویس‌ها را ساده‌تر می‌کند.&lt;br /&gt;
&lt;br /&gt;
== Volume و نگهداری داده ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker volume ls&lt;br /&gt;
docker volume create app-data&lt;br /&gt;
docker volume inspect app-data&lt;br /&gt;
docker run -d --name db -v app-data:/var/lib/postgresql/data postgres:16&lt;br /&gt;
docker volume rm app-data&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
حذف volume برگشت‌پذیر نیست. برای داده‌های مهم ابتدا backup بگیرید و وجود mount و permission را بررسی کنید.&lt;br /&gt;
&lt;br /&gt;
== Docker Compose ==&lt;br /&gt;
نمونه فایل &amp;lt;code&amp;gt;compose.yaml&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
services:&lt;br /&gt;
  web:&lt;br /&gt;
    image: nginx:1.27-alpine&lt;br /&gt;
    ports:&lt;br /&gt;
      - &amp;quot;8080:80&amp;quot;&lt;br /&gt;
    networks: [app]&lt;br /&gt;
    restart: unless-stopped&lt;br /&gt;
    healthcheck:&lt;br /&gt;
      test: [&amp;quot;CMD-SHELL&amp;quot;, &amp;quot;wget -q -O - http://localhost/ || exit 1&amp;quot;]&lt;br /&gt;
      interval: 30s&lt;br /&gt;
      timeout: 5s&lt;br /&gt;
      retries: 3&lt;br /&gt;
  redis:&lt;br /&gt;
    image: redis:7-alpine&lt;br /&gt;
    networks: [app]&lt;br /&gt;
networks:&lt;br /&gt;
  app:&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker compose config&lt;br /&gt;
docker compose pull&lt;br /&gt;
docker compose up -d&lt;br /&gt;
docker compose ps&lt;br /&gt;
docker compose logs -f --tail=100&lt;br /&gt;
docker compose exec web sh&lt;br /&gt;
docker compose restart web&lt;br /&gt;
docker compose down&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs، inspect و exec ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker logs --tail=100 web&lt;br /&gt;
docker logs --since=30m --timestamps web&lt;br /&gt;
docker logs -f web&lt;br /&gt;
docker inspect web&lt;br /&gt;
docker inspect --format &amp;#039;{{.State.Status}} {{.State.Health.Status}}&amp;#039; web&lt;br /&gt;
docker exec -it web sh&lt;br /&gt;
docker exec web env&lt;br /&gt;
docker cp web:/etc/nginx/nginx.conf ./nginx.conf&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
برای جلوگیری از پرشدن دیسک، در daemon یا Compose از log rotation استفاده کنید:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
logging:&lt;br /&gt;
  driver: json-file&lt;br /&gt;
  options:&lt;br /&gt;
    max-size: &amp;quot;10m&amp;quot;&lt;br /&gt;
    max-file: &amp;quot;5&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== healthcheck ==&lt;br /&gt;
healthcheck فقط زنده‌بودن process را ثابت نمی‌کند؛ باید مسیر یا وابستگی اصلی را با timeout کوتاه بررسی کند.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker inspect --format &amp;#039;{{json .State.Health}}&amp;#039; web&lt;br /&gt;
docker ps --format &amp;#039;table {{.Names}}	{{.Status}}	{{.Ports}}&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! وضعیت !! تفسیر !! اقدام&lt;br /&gt;
|-&lt;br /&gt;
| starting || هنوز تعداد آزمون لازم کامل نشده است. || کمی صبر و سپس بررسی log.&lt;br /&gt;
|-&lt;br /&gt;
| healthy || healthcheck موفق است. || با smoke test مسیر واقعی نیز تأیید شود.&lt;br /&gt;
|-&lt;br /&gt;
| unhealthy || healthcheck شکست خورده است. || log، dependency، DNS، پورت و منابع را بررسی کنید.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== محدودیت منابع ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -d --name api --memory=512m --memory-swap=512m --cpus=1.5 --pids-limit=200 api:1.0&lt;br /&gt;
docker update --memory=1g --cpus=2 api&lt;br /&gt;
docker inspect --format &amp;#039;{{.HostConfig.Memory}} {{.HostConfig.NanoCpus}}&amp;#039; api&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
در Production برای هر سرویس limit و در صورت نیاز reservation تعریف کنید. OOM شدن را با &amp;lt;code&amp;gt;docker inspect&amp;lt;/code&amp;gt; و رویدادهای kernel بررسی کنید.&lt;br /&gt;
&lt;br /&gt;
== مانیتورینگ سریع ==&lt;br /&gt;
=== docker stats ===&lt;br /&gt;
نمایش زنده همه کانتینرها:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker stats&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
نمایش یک‌باره با فرمت جدول استاندارد:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker stats --no-stream&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
فقط کانتینرهای منتخب:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker stats --no-stream web db redis&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== مرتب‌سازی بر اساس بیشترین CPU با خروجی جدولی ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
(printf &amp;quot;NAME	CPU %%	MEM USAGE / LIMIT	MEM %%&lt;br /&gt;
&amp;quot;; docker stats --no-stream --format &amp;#039;{{.Name}}	{{.CPUPerc}}	{{.MemUsage}}	{{.MemPerc}}&amp;#039; | sort -t$&amp;#039;	&amp;#039; -k2 -hr) | column -t -s $&amp;#039;	&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== مرتب‌سازی بر اساس بیشترین درصد RAM ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
(printf &amp;quot;NAME	CPU %%	MEM USAGE / LIMIT	MEM %%&lt;br /&gt;
&amp;quot;; docker stats --no-stream --format &amp;#039;{{.Name}}	{{.CPUPerc}}	{{.MemUsage}}	{{.MemPerc}}&amp;#039; | sort -t$&amp;#039;	&amp;#039; -k4 -hr) | column -t -s $&amp;#039;	&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== نسخه قابل ذخیره ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker stats --no-stream --format &amp;#039;{{.Name}},{{.CPUPerc}},{{.MemUsage}},{{.MemPerc}},{{.NetIO}},{{.BlockIO}}&amp;#039; | sort -t, -k4 -hr &amp;gt; docker-stats.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;MemUsage&amp;lt;/code&amp;gt; معمولاً به شکل &amp;lt;code&amp;gt;مصرف / limit&amp;lt;/code&amp;gt; و با واحدهایی مانند MiB یا GiB است. برای مرتب‌سازی قابل‌اعتماد، از &amp;lt;code&amp;gt;MemPerc&amp;lt;/code&amp;gt; استفاده کنید؛ مقایسه مستقیم رشته‌های اندازه حافظه به‌دلیل تفاوت واحدها خطاپذیر است.&lt;br /&gt;
&lt;br /&gt;
== top، events و system df ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker top web&lt;br /&gt;
docker events --since 30m&lt;br /&gt;
docker events --filter type=container&lt;br /&gt;
docker system df&lt;br /&gt;
docker system df -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== prune و پاک‌سازی کنترل‌شده ==&lt;br /&gt;
ابتدا preview بگیرید و سپس حذف کنید:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker system df&lt;br /&gt;
docker container prune&lt;br /&gt;
docker image prune&lt;br /&gt;
docker builder prune&lt;br /&gt;
docker volume prune&lt;br /&gt;
docker system prune&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;docker system prune -a --volumes&amp;lt;/code&amp;gt; بسیار مخرب است و می‌تواند imageها و volumeهای بدون استفاده را حذف کند. در محیط Production بدون فهرست‌برداری، backup و مجوز تغییر اجرا نشود.&lt;br /&gt;
&lt;br /&gt;
== Backup و Restore ==&lt;br /&gt;
=== backup از volume ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run --rm -v app-data:/source -v &amp;quot;$PWD&amp;quot;:/backup alpine sh -c &amp;#039;tar czf /backup/app-data.tgz -C /source .&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== restore به volume ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run --rm -v app-data:/target -v &amp;quot;$PWD&amp;quot;:/backup alpine sh -c &amp;#039;tar xzf /backup/app-data.tgz -C /target&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
برای دیتابیس، dump منطقی مانند &amp;lt;code&amp;gt;pg_dump&amp;lt;/code&amp;gt; معمولاً از tar خام volume قابل‌اعتمادتر است. Restore را در محیط جداگانه آزمایش کنید.&lt;br /&gt;
&lt;br /&gt;
== عیب‌یابی ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! نشانه !! بررسی‌های پیشنهادی&lt;br /&gt;
|-&lt;br /&gt;
| کانتینر فوراً خارج می‌شود || &amp;lt;code&amp;gt;docker logs&amp;lt;/code&amp;gt;، command، exit code، env و permission.&lt;br /&gt;
|-&lt;br /&gt;
| پورت پاسخ نمی‌دهد || &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt;، mapping پورت، bind address، firewall و healthcheck.&lt;br /&gt;
|-&lt;br /&gt;
| مصرف RAM زیاد || &amp;lt;code&amp;gt;docker stats&amp;lt;/code&amp;gt;، OOM، limit، memory leak و cache.&lt;br /&gt;
|-&lt;br /&gt;
| ارتباط سرویس‌ها قطع است || network مشترک، DNS نام سرویس، پورت داخلی و policy شبکه.&lt;br /&gt;
|-&lt;br /&gt;
| دیسک پر شده || &amp;lt;code&amp;gt;docker system df -v&amp;lt;/code&amp;gt;، log rotation، image و volume.&lt;br /&gt;
|-&lt;br /&gt;
| restart loop || &amp;lt;code&amp;gt;docker inspect&amp;lt;/code&amp;gt;، restart policy، dependency و readiness.&lt;br /&gt;
|-&lt;br /&gt;
| build کند است || Dockerfile layerها، .dockerignore، cache و حجم context.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker inspect --format &amp;#039;{{.State.ExitCode}} {{.State.OOMKilled}} {{.State.Error}}&amp;#039; web&lt;br /&gt;
docker inspect --format &amp;#039;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&amp;#039; web&lt;br /&gt;
docker port web&lt;br /&gt;
docker diff web&lt;br /&gt;
docker cp web:/var/log/app.log ./app.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== امنیت پایه ==&lt;br /&gt;
* imageها را از registry معتبر دریافت و digest آن‌ها را pin کنید.&lt;br /&gt;
* از اجرای process با کاربر root درون کانتینر پرهیز کنید؛ در Dockerfile از &amp;lt;code&amp;gt;USER&amp;lt;/code&amp;gt; استفاده کنید.&lt;br /&gt;
* secret را در Dockerfile، image layer، command line، environment عمومی یا log قرار ندهید.&lt;br /&gt;
* capabilityهای غیرضروری را حذف و filesystem را در صورت امکان read-only کنید.&lt;br /&gt;
* پورت‌های مدیریتی را عمومی نکنید و network را حداقل‌گرا نگه دارید.&lt;br /&gt;
* image scan، patch منظم، SBOM، امضای image و بررسی license را در pipeline قرار دهید.&lt;br /&gt;
* socket فایل &amp;lt;code&amp;gt;/var/run/docker.sock&amp;lt;/code&amp;gt; را بدون درک ریسک به کانتینر mount نکنید.&lt;br /&gt;
* daemon، kernel و imageهای پایه را به‌روز نگه دارید و دسترسی کاربران را audit کنید.&lt;br /&gt;
&lt;br /&gt;
== پایش عملکرد در Production ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! حوزه !! شاخص‌های مهم&lt;br /&gt;
|-&lt;br /&gt;
| CPU || مصرف فعلی، throttling، load و تعداد process.&lt;br /&gt;
|-&lt;br /&gt;
| Memory || مصرف، limit، نسبت مصرف، OOM kill و page fault.&lt;br /&gt;
|-&lt;br /&gt;
| Disk || اندازه writable layer، volume، image، log و inode.&lt;br /&gt;
|-&lt;br /&gt;
| Network || RX/TX، خطا، drop، latency و connection count.&lt;br /&gt;
|-&lt;br /&gt;
| Application || نرخ درخواست، latency، خطا، صف، dependency و health.&lt;br /&gt;
|-&lt;br /&gt;
| Runtime || restart count، uptime، exit code و health transition.&lt;br /&gt;
|}&lt;br /&gt;
پایش دوره‌ای ساده:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
while true; do&lt;br /&gt;
  date -Is&lt;br /&gt;
  docker stats --no-stream --format &amp;#039;table {{.Name}}	{{.CPUPerc}}	{{.MemUsage}}	{{.MemPerc}}	{{.NetIO}}	{{.BlockIO}}&amp;#039;&lt;br /&gt;
  sleep 10&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
برای مشاهده طولانی‌مدت، خروجی را به سامانه‌ای مانند Prometheus/Grafana یا سرویس مانیتورینگ سازمانی ارسال کنید. صرفاً ذخیره‌کردن متن &amp;lt;code&amp;gt;docker stats&amp;lt;/code&amp;gt; جایگزین متریک‌های time-series و alerting نیست.&lt;br /&gt;
&lt;br /&gt;
== مجموعه دستورهای مرجع ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker ps --format &amp;#039;table {{.Names}}	{{.Image}}	{{.Status}}	{{.Ports}}&amp;#039;&lt;br /&gt;
docker system df -v&lt;br /&gt;
docker inspect --format &amp;#039;{{.Name}} {{.State.Status}} {{.State.Health.Status}}&amp;#039; $(docker ps -q)&lt;br /&gt;
docker stats --no-stream&lt;br /&gt;
docker events --since 15m --filter type=container&lt;br /&gt;
docker logs --since=15m --tail=200 --timestamps CONTAINER&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== چک‌لیست انتشار ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! مورد !! وضعیت مورد انتظار&lt;br /&gt;
|-&lt;br /&gt;
| Image || tag/digest مشخص، scan شده و بدون secret.&lt;br /&gt;
|-&lt;br /&gt;
| Container || کاربر غیرroot، limit منابع و restart policy مناسب.&lt;br /&gt;
|-&lt;br /&gt;
| Network || فقط ارتباط‌های لازم و بدون پورت مدیریتی عمومی.&lt;br /&gt;
|-&lt;br /&gt;
| Data || volume مشخص، backup و restore آزمایش‌شده.&lt;br /&gt;
|-&lt;br /&gt;
| Health || healthcheck معتبر و smoke test مسیر واقعی.&lt;br /&gt;
|-&lt;br /&gt;
| Logs || timestamp، سطح مناسب، rotation و حذف داده حساس.&lt;br /&gt;
|-&lt;br /&gt;
| Monitoring || alert برای OOM، restart، health، دیسک، CPU و latency.&lt;br /&gt;
|-&lt;br /&gt;
| Rollback || image قبلی، migration و مسیر بازگشت مستند.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== مراجع ==&lt;br /&gt;
* [https://docs.docker.com/ مستندات رسمی Docker]&lt;br /&gt;
* [https://docs.docker.com/engine/reference/commandline/cli/ مرجع Docker CLI]&lt;br /&gt;
* [https://docs.docker.com/compose/ مستندات Docker Compose]&lt;br /&gt;
&lt;br /&gt;
[[رده:Docker]]&lt;br /&gt;
[[رده:مانیتورینگ]]&lt;br /&gt;
[[رده:DevOps]]&lt;/div&gt;</summary>
		<author><name>Karavi</name></author>
	</entry>
</feed>