DOCKER(1) Docker User Manuals DOCKER(1)

docker-network-create - ایجاد یک شبکه جدید

docker network create [OPTIONS] NETWORK

یک شبکه جدید ایجاد می‌کند. مقدار DRIVER درایورهای شبکه داخلی یعنی bridge یا overlay را می‌پذیرد. اگر یک درایور شبکه شخص ثالث یا سفارشی خود را نصب کرده‌اید، می‌توانید آن DRIVER را نیز در اینجا مشخص کنید. اگر گزینه --driver را تعیین نکنید، دستور به‌طور خودکار یک شبکه bridge برای شما ایجاد می‌کند. هنگام نصب Docker Engine، یک شبکه bridge به‌طور خودکار ایجاد می‌شود. این شبکه متناظر با پل docker0 است که Engine به‌طور سنتی به آن متکی بوده است. هنگامی که یک کانتینر جدید را با docker run اجرا می‌کنید، به‌طور خودکار به این شبکه پل متصل می‌شود. شما نمی‌توانید این شبکه پل پیش‌فرض را حذف کنید، اما می‌توانید با استفاده از دستور network create شبکه‌های جدیدی بسازید.

$ docker network create -d bridge my-bridge-network

شبکه‌های پل (Bridge networks) شبکه‌هایی ایزوله روی یک Engine نصب‌شده هستند. اگر می‌خواهید شبکه‌ای ایجاد کنید که چندین میزبان Docker را که هر کدام یک Engine اجرا می‌کنند در بر گیرد، باید حالت Swarm را فعال کرده و یک شبکه overlay بسازید. برای مطالعه بیشتر در مورد شبکه‌های overlay همراه با حالت Swarm، نشانی زیر را ببینید: ⟨https://docs.docker.com/network/overlay⟩.

پس از فعال کردن حالت swarm، می‌توانید یک شبکه overlay در حوزه swarm ایجاد کنید:

$ docker network create --scope=swarm --attachable -d overlay my-multihost-network

به‌طور پیش‌فرض، شبکه‌های در حوزه swarm اجازه اتصال کانتینرهایی را که به صورت دستی شروع شده‌اند نمی‌دهند. این محدودیت برای جلوگیری از این اضافه شده است که فردی با دسترسی به یک گره غیرمدیر در کلاستر swarm نتواند کانتینری اجرا کند که قادر به دسترسی به پشته شبکه یک سرویس swarm باشد.

گزینه --attachable که در مثال بالا استفاده شد این محدودیت را غیرفعال می‌کند و به هر دو سرویس‌های swarm و کانتینرهای شروع‌شده به‌صورت دستی اجازه می‌دهد به شبکه overlay متصل شوند.

نام‌های شبکه باید یکتا باشند. دیمن Docker تلاش می‌کند تداخل نام‌ها را شناسایی کند اما این امر تضمین‌شده نیست. اجتناب از تداخل نام‌ها بر عهده کاربر است.

هنگام ایجاد شبکه‌ها با استفاده از حالت پیش‌فرض VIP-based endpoint-mode، باید شبکه‌های overlay را با بلوک‌های /24 (پیش‌فرض) بسازید که شما را به ۲۵۶ آدرس IP محدود می‌کند. این توصیه محدودیت‌های حالت swarm را در نظر می‌گیرد: ⟨https://github.com/moby/moby/issues/30820⟩. اگر به بیش از ۲۵۶ آدرس IP نیاز دارید، اندازه بلوک IP را افزایش ندهید. می‌توانید از حالت پایانه dnsrr همراه با یک متعادل‌کننده بار خارجی استفاده کنید، یا از چندین شبکه overlay کوچک‌تر بهره ببرید. برای اطلاعات بیشتر درباره حالت‌های مختلف پایانه، مستند پیکربندی کشف سرویس را ببینید: ⟨https://docs.docker.com/engine/swarm/networking/#configure-service-discovery⟩

هنگام راه‌اندازی کانتینر، از فلگ --network برای اتصال آن به شبکه استفاده کنید. این مثال کانتینر busybox را به شبکه mynet اضافه می‌کند:

$ docker run -itd --network=mynet busybox

اگر می‌خواهید کانتینری را پس از اجرا شدن به یک شبکه اضافه کنید، از زیردستور docker network connect استفاده نمایید.

می‌توانید چندین کانتینر را به یک شبکه متصل کنید. پس از اتصال، کانتینرها می‌توانند صرفاً با استفاده از آدرس IP یا نام کانتینر دیگر ارتباط برقرار کنند. برای شبکه‌های overlay یا پلاگین‌های سفارشی که از اتصال چندمیزبانه پشتیبانی می‌کنند، کانتینرهای متصل به همان شبکه چندمیزبانه اما راه‌اندازی‌شده از Engineهای مختلف نیز می‌توانند به همین روش ارتباط برقرار کنند.

می‌توانید با استفاده از دستور docker network disconnect یک کانتینر را از شبکه جدا کنید.

هنگام ایجاد یک شبکه، Engine به‌طور پیش‌فرض یک زیرشبکه بدون همپوشانی برای شبکه ایجاد می‌کند. این زیرشبکه یک بخش تفکیک‌شده از شبکه موجود نیست، بلکه صرفاً برای مقاصد آدرس‌دهی IP است. شما می‌توانید این پیش‌فرض را لغو کرده و مقادیر زیرشبکه را مستقیماً با استفاده از گزینه --subnet مشخص کنید. روی یک شبکه bridge فقط می‌توانید یک زیرشبکه تکی ایجاد کنید:

$ docker network create --driver=bridge --subnet=192.168.0.0/16 br0

علاوه بر این، می‌توانید گزینه‌های --gateway، --ip-range و --aux-address را نیز تعیین کنید.

$ docker network create \
  --driver=bridge \
  --subnet=172.28.0.0/16 \
  --ip-range=172.28.5.0/24 \
  --gateway=172.28.5.254 \
  br0

اگر فلگ --gateway را حذف کنید، Engine یک دروازه را از داخل یک استخر ترجیحی برای شما انتخاب می‌کند. برای شبکه‌های overlay و برای درایورهای پلاگین شبکه که از آن پشتیبانی می‌کنند، می‌توانید چندین زیرشبکه ایجاد کنید. این مثال از دو ماسک زیرشبکه /25 استفاده می‌کند تا از راهنمای فعلی مبنی بر عدم داشتن بیش از ۲۵۶ آدرس IP در یک شبکه overlay تکی پیروی کند. هر یک از زیرشبکه‌ها دارای ۱۲۶ آدرس قابل استفاده هستند.

$ docker network create -d overlay \
  --subnet=192.168.10.0/25 \
  --subnet=192.168.20.0/25 \
  --gateway=192.168.10.100 \
  --gateway=192.168.20.100 \
  --aux-address="my-router=192.168.10.5" --aux-address="my-switch=192.168.10.6" \
  --aux-address="my-printer=192.168.20.5" --aux-address="my-nas=192.168.20.6" \
  my-multihost-network

اطمینان حاصل کنید که زیرشبکه‌های شما همپوشانی ندارند. در صورت همپوشانی، ایجاد شبکه با شکست مواجه شده و Engine خطایی برمی‌گرداند.

هنگام ایجاد یک شبکه سفارشی، درایور پیش‌فرض شبکه (یعنی bridge) دارای گزینه‌های اضافی است که می‌توان آن‌ها را ارسال کرد. موارد زیر همان گزینه‌ها و معادل فلگ‌های دیمن docker مورد استفاده برای پل docker0 هستند:

Option Equivalent Description
com.docker.network.bridge.name - نام پل برای استفاده هنگام ایجاد پل لینوکس (Linux bridge)
com.docker.network.bridge.enable_ip_masquerade --ip-masq فعال‌سازی IP masquerading
com.docker.network.bridge.enable_icc --icc فعال یا غیرفعال کردن ارتباط بین کانتینرها (Inter Container Connectivity)
com.docker.network.bridge.host_binding_ipv4 --ip آدرس IP پیش‌فرض هنگام bind کردن درگاه‌های کانتینر
com.docker.network.driver.mtu --mtu تنظیم MTU شبکه کانتینرها
com.docker.network.container_iface_prefix - تنظیم یک پیشوند سفارشی برای رابط‌های کانتینر

آرگومان‌های زیر را می‌توان برای هر درایور شبکه به docker network create ارسال کرد، که مجدداً معادل‌های تقریبی آن‌ها در docker daemon آورده شده است:

Argument Equivalent Description
--gateway - دروازه IPv4 یا IPv6 برای زیرشبکه اصلی
--ip-range --fixed-cidr تخصیص IPها از یک محدوده
--internal - محدود کردن دسترسی خارجی به شبکه
--ipv6 --ipv6 فعال‌سازی شبکه IPv6
--subnet --bip زیرشبکه برای شبکه

به‌عنوان مثال، بیایید از گزینه‌های -o یا --opt برای تعیین مقیدسازی آدرس IP هنگام انتشار درگاه‌ها استفاده کنیم:

$ docker network create \
    -o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" \
    simple-network

به‌طور پیش‌فرض، هنگامی که کانتینری را به یک شبکه overlay متصل می‌کنید، Docker یک شبکه bridge را نیز به آن متصل می‌کند تا اتصال خارجی فراهم شود. اگر می‌خواهید یک شبکه overlay از نظر خارجی ایزوله ایجاد کنید، می‌توانید گزینه --internal را مشخص نمایید.

می‌توانید شبکه‌ای ایجاد کنید که برای ارائه مش مسیریابی (routing-mesh) در کلاستر swarm استفاده شود. این کار را با تعیین --ingress هنگام ایجاد شبکه انجام می‌دهید. در هر زمان فقط یک شبکه ingress می‌تواند ایجاد شود. این شبکه تنها در صورتی قابل حذف است که هیچ سرویسی به آن وابسته نباشد. هر گزینه‌ای که هنگام ایجاد یک شبکه overlay در دسترس است، به جز گزینه --attachable، هنگام ایجاد شبکه ingress نیز در دسترس خواهد بود.

$ docker network create -d overlay \
  --subnet=10.11.0.0/16 \
  --ingress \
  --opt com.docker.network.driver.mtu=9216 \
  --opt encrypted=true \
  my-ingress-network

می‌توانید سرویس‌هایی روی شبکه‌های از پیش تعریف‌شده docker یعنی bridge و host ایجاد کنید.

$ docker service create --name my-service \
  --network host \
  --replicas 2 \
  busybox top

می‌توانید یک شبکه swarm با درایورهای شبکه در حوزه محلی (local scope) ایجاد کنید. این کار را با ارتقای حوزه شبکه به swarm در حین ایجاد شبکه انجام می‌دهید. سپس می‌توانید هنگام ایجاد سرویس‌ها از این شبکه استفاده کنید.

$ docker network create -d bridge \
  --scope swarm \
  --attachable \
  swarm-network

برای درایورهای شبکه‌ای که اتصال بین میزبان‌ها را فراهم می‌کنند (مانند macvlan)، اگر پیکربندی‌های خاص هر گره برای اتصال شبکه در هر میزبان مورد نیاز باشد، آن پیکربندی را از طریق یک شبکه فقط-پیکربندی (configuration only) تامین خواهید کرد. هنگامی که شبکه در حوزه swarm را ایجاد می‌کنید، نام شبکه‌ای را که حاوی پیکربندی است مشخص خواهید نمود.

node1$ docker network create --config-only --subnet 192.168.100.0/24 --gateway 192.168.100.115 mv-config
node2$ docker network create --config-only --subnet 192.168.200.0/24 --gateway 192.168.200.202 mv-config
node1$ docker network create -d macvlan --scope swarm --config-from mv-config --attachable swarm-network

--attachable[=false] فعال‌سازی پیوست دستی کانتینر

--aux-address=map[] آدرس‌های کمکی IPv4 یا IPv6 مورد استفاده توسط درایور شبکه

--config-from="" شبکه‌ای که پیکربندی از آن کپی می‌شود

--config-only[=false] ایجاد یک شبکه فقط-پیکربندی (configuration only)

-d, --driver="bridge" درایور مدیریت شبکه

--gateway=[] دروازه IPv4 یا IPv6 برای زیرشبکه اصلی

--ingress[=false] ایجاد شبکه routing-mesh در swarm

--internal[=false] محدود کردن دسترسی خارجی به شبکه

--ip-range=[] تخصیص IP کانتینر از یک زیرمحدوده

--ipam-driver="default" درایور مدیریت آدرس IP (IPAM)

--ipam-opt=map[] تنظیم گزینه‌های خاص درایور IPAM

--ipv4[=true] فعال یا غیرفعال کردن تخصیص آدرس IPv4

--ipv6[=false] فعال یا غیرفعال کردن تخصیص آدرس IPv6

--label= تنظیم متاداده روی یک شبکه

-o, --opt=map[] تنظیم گزینه‌های خاص درایور

--scope="" کنترل حوزه (scope) شبکه

--subnet=[] زیرشبکه در قالب CIDR که نشان‌دهنده یک بخش از شبکه است

docker-network(1)

Aug 2026 Docker Community