Зачем нужны docker networks?
Обьясните пожалуйста, зачем нужны docker network? Я прочитал некоторую документацию, но на практическом примере не понимаю зачем нам нужно манипулировать сетью. Вот у меня есть docker-compose в котором все и так прекрасно работает и с network и без network. Просветите плз, какие бенефиты будут в практическом применении если раскоментить docker-compose в нужнных местах?
version: '3.4'
services:
main:
container_name: main
build:
context: .
target: development
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- ${PORT}:${PORT}
command: npm run start:dev
env_file:
- .env
# networks:
# - webnet
depends_on:
- postgres
postgres:
container_name: postgres
image: postgres:12
# networks:
# - webnet
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
PG_DATA: /var/lib/postgresql/data
ports:
- 5432:5432
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 1m30s
timeout: 10s
retries: 3
# networks:
# webnet:
volumes:
pgdata:
Ответы (1 шт):
допустим, у вас есть 2 контейнера
грубо говоря, у каждого контейнера своё окружение.
как результат - будучи даже запущенными через 1 docker-compose, они не будут иметь возможности общаться друг с другом
для того, чтобы контейнеры могли взаимодействовать между собой, нужно их подключить в общий network
вот вам такой пример:
чтобы у вас в системе php мог кешировать в редис данные, ему нужно как-то с редисом связаться
он пошлет запрос set key1 value1 на примерно такой урл: redis:6379
без нетворков вы можете просто упереться в проблему, что ваш скрипт скажет, что такого урла нету(хотя оба контейнера будут подняты, и отлично работать по отдельности)
есть разные виды нетворков, и мой описанный пример - 1 из юзкейсов, их гораздо больше
почитайте про типы, мне лично пока что хватает bridge-а, но судья по тому что пишут, это очень широкое поле для познаний и применений
upd.
Меня правильно поправил @RomanKonoval, поэтому перефразирую ответ: у меня на работе одновременно запущены 2+ независимых проекта, которые общаются друг с другом. По отдельности они могут офк видеть только свои контейнеры, но не могут видеть контейнеры друг друга. Соответственно, для легенького проекта всё gut, можно сеть не тянуть.
Но, как только у вас появится какой-то микросервис, или просто ещё 1 проект, который нужно будет сконнектить с первым, вот тут вам без нетворков уже никак
Поэтому, себе в работе я сформировал правило: лишний раз протянутый нетворк лишним не бывает