docker-networking

این قسمت در مورد docker network می‌خواهیم صحبت کنیم. این دستور به ما کمک خواهد کرد که شبکه‌ی ارتباطی docker و کانتیرهای آن را مدیریت کنیم و ارتباط کانتینر‌ها با یکدیگر و هاست خود و دیگر هاست‌ها را پیکربندی نماییم.

docker network --help
docker network –help

این دستور ۷ تا آپشن دارد که تعدادی از آنها خیلی اهمیت دارد و بسیار پر مصرف می‌باشد.

دستور docker network connect:

با استفاده از این آپشن می‌توانید یک کانتینر را به یک شبکه‌ که ایجاد کرده‌اید متصل نمایید. این دستور خودش دارای آپشن‌هایی هست که با استفاده از آن می‌توان کانتینر را به شبکه متصل کرد.

docker network connect --help
docker network connect –help

با استفاده از آپشن‌ها می‌توان به کانتینر alias داد و برای آن ip نسخه‌ی ۴ و ۶ قرار داد و بین کانتینرها لینک ایجاد کرد. با استفاده از این آپشن می‌توان کانتینرهایی که ایجاد شده است را به شبکه‌های مختلف که ساخته شده است متصل کرد. به مثال‌های زیر توجه کنید:

docker network connect network1 container1 docker network connect --ip 10.10.36.122 network1 container1 docker network connect --link container2:c2 network1 container2 docker network connect --alias db --alias mysql network1 container2

در مثال‌‌های بالا مشاهده می‌کنید که کانتینر در حال کار را به یک شبکه متصل کرده که در این راستا کانفیگ‌های دیگری اعم از IP و لینک و موارد این‌چنینی را انجام داده است.

دستور docker network create:

با استفاده از این آپشن شما می‌توانید یک network ایجاد کنید. این دستور نیز خودش دارای آپشن‌های زیادی می‌باشد که با استفاده از آنها می‌توانید network را با جزئیات بیشتری ایجاد کنید.

docker network create --help
docker network create –help

معمولا تمام این آپشن‌ها مورد استفاده نیست و بیشتر در سناریو‌ها این موارد را بررسی می‌کنیم. در اینجا به بیان چند مثال اکتفا می‌کنیم.

در این مثال یک network با درایور bridge ایجاد شده است که نام آن my-bridge-network می‌باشد.

docker network create -d bridge my-bridge-network

در این مثال یک network با subnet مشخص ip ایجاد شده است که نام آن multi-host-network می‌باشد.

docker network create –subnet 172.20.0.0/16 –ip-range 172.20.240.0/20 multi-host-network

در این مثال یک network با subnet مشخص ایجاد شده است که درایور آن را نیز bridge قرار داده است که برای درایور bridge آپشن mtu را برابر 9216 قرار داده است.

docker network create –driver=bridge –subnet=172.28.0.0/16 –ip-range=172.28.5.0/24 –gateway=172.28.5.254 –opt com.docker.network.driver.mtu=9216 br0

همان‌طور که در مثال‌های بالا مشاهده کردید تقریبا تمام موارد مربوط به پیکربندی network را می‌توانید با آپشن‌های موجود در هنگام ایجاد network بر روی آن اعمال کنید. توضیح تمام این موارد را می‌توانید در اینلینک مشاهده کنید و اینکه بنا بر نیاز برخی از این آپشن‌ها در سناریوهای پیاده‌سازی بررسی خواهد شد.

دستور docker network disconnect:

این دستور برعکس دستور connect کانتینر شما را از network شما قطع خواهد کرد و به network پیش‌فرض متصل می‌کند. تنها یک آپشن دارد که مربوط به force می‌باشد. به الگو استفاده‌ی آن توجه کنید.

docker network disconnect --help
docker network disconnect –help

به مثال زیر توجه کنید:

docker network disconnect multi-host-network container1

دستور docker network inspect:

با استفاده از این دستور می‌توانید جزئیات کامل و تمامی اطلاعات موجود در مورد network که ایجاد شده است را داشته باشید.

docker network inspect --help
docker network inspect –help

به صورت پیش‌فرض خروجی که به شما نمایش می‌دهد به صورت JSON می‌باشد. با استفاده از آپشن f- می‌توانید فرمت مد نظر خودتون در خروجی این دستور را داشته باشید.

هر زمانی که یک network ایجاد کردید با استفاده از این دستور می‌توانید بررسی کنید که مواردی که اعمال کردید به درستی ایجاد شده است و یا اینکه چه کانتینرهایی در حال حاضر با این network در ارتباط هستند.

دستور docker network ls:

با استفاده از این دستور شما می‌توانید لیست networkهایی که ایجاد کردید را مشاهده کنید. این دستور دارای چند تا آپشن می‌باشد که با توجه به توضیحات دستورات قبلی تمام موارد آن مشخص می‌باشد.

docker network ls --help
docker network ls –help

به مثال‌های زیر توجه کنید:

در مثال زیر لیست networkهایی را نمایش می‌دهد که درایور آنها bridge باشد.

docker network ls –filter driver=bridge

مواردی که بر اساس آن می‌توان در این دستور filter نوشت تا خروجی دلخواه را داشت به قرار زیر است.

docker network ls --filter
docker network ls –filter

یکی دیگر از آپشن‌هایی که مورد استفاده دارد format است که بر اساس آن می‌توان خروجی را متناسب با دلخواه و مورد استفاده خود تغییر داد و آن را ایجاد کرد. مواردی که در فرمت می‌توان آنها را داشت به قرار زیر است:

docker network ls --format
docker network ls –format

برای مثال زمانی که بخواهید در خروجی فقط id و driver مربوط به هر network را داشته باشید از دستور زیر استفاده می‌کنید.

docker network ls --format "{{.ID}}: {{.Driver}}"

دستور docker network prune:

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

docker network prune --help
docker network prune –help

آپشن‌های این دستور مشخص می‌باشد که با یکی از آنها فیلتری برای مشخص کردن اینکه کدام یک از آپشن‌ها پاک شود مشخص خواهید کرد و با یکی دیگر برای پاک کردن اجبار ایجاد خواهید کرد.

بر اساس موارد زیر می‌توانید برای این دستور فیلتر مشخص بنویسید.

docker network prune --filter
docker network prune –filter

دستور docker network rm:

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

docker network rm my-network