چرا کانتینرها باید با هم صحبت کنند؟
در بیشتر برنامههای واقعی، چند کانتینر باید با هم ارتباط برقرار کنند؛ مثلاً یک برنامهی وب باید بتواند به یک کانتینر پایگاهداده متصل شود. داکر برای این منظور مفهوم network را ارائه میدهد. سادهترین راه، ساختن یک شبکهی سفارشی از نوع bridge است:
docker network create app-network
docker run -d --name db --network app-network postgres:16
docker run -d --name web --network app-network my-app:1.0
مزیت کلیدی network سفارشی این است که کانتینرهای متصل به آن میتوانند با استفاده از نام کانتینر بهجای IP به یکدیگر متصل شوند؛ یعنی داخل کد برنامهی web کافی است به آدرس db وصل شوید (مثلاً db:5432 برای پستگرس) و داکر بهطور خودکار این نام را به آدرس داخلی درست ترجمه میکند. این قابلیت به نام DNS داخلی داکر شناخته میشود.
انواع دیگر network
علاوه بر bridge که پیشفرض و رایجترین است، داکر انواع دیگری مثل host (اشتراک مستقیم شبکهی میزبان، بدون ایزولهسازی) و none (بدون هیچ دسترسی شبکهای) را نیز پشتیبانی میکند. برای دیدن شبکههای موجود و جزئیات یک شبکه:
docker network ls
docker network inspect app-network
در عمل، معمولاً بهجای ساختن دستی این شبکهها، از docker compose استفاده میکنیم که این کار را بهطور خودکار برای سرویسهای تعریفشده انجام میدهد؛ موضوعی که در فصل بعد به آن میپردازیم.