#docker #docker-compose
Вопрос:
Пожалуйста, объясните, зачем docker network
это нужно? Я прочитал некоторую документацию, но на практическом примере я не понимаю, зачем нам нужно манипулировать network
. Здесь у меня есть docker-compose
, в котором все работает нормально с и без network
. Объясните мне, пожалуйста, какие преимущества будут полезны на практике, если вы раскомментируете docker-compose
в нужных местах? Теперь мои контейнеры отлично взаимодействуют, есть миграции из ORM в базу данных, зачем мне это нужно networks
?
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. В вашем примере особой разницы нет. Без определений сети docker-compose по-прежнему создает сеть для ваших контейнеров.
2. Переполнение стека предназначено только для узких, конкретных вопросов о проблемах, возникающих при написании кода. Общие вычислительные вопросы лучше подходят для суперпользователя .
Ответ №1:
Если сети не определены, docker-compose создаст сеть по умолчанию с сгенерированным именем. В противном случае вы можете вручную указать сеть и ее имя в файле создания.
Вы можете прочитать больше на сайте Networking в <url>
Ответ №2:
Здесь объясняется Docker network — Обзор сети, а вот учебные пособия:
Ответ №3:
Без сети конфигурации для контейнеров все IP-адреса контейнеров находятся в одном диапазоне (например, 172.17.0.0/16). кроме того, они могут видеть друг друга по имени контейнера (внутренний DNS Docker).
Простое использование сети в docker:
Если вы хотите изолировать количество контейнеров в определенном сетевом диапазоне, вы должны использовать сеть docker.