Docker: несколько сетей для изоляции сервисов

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

dockerсетиизоляция

👁 В сложных приложениях, состоящих из множества сервисов, важно разделять их в отдельные сети для обеспечения безопасности и лучшей изоляции. Docker позволяет создать несколько сетей для контейнеров, что дает возможность ограничить доступ сервисов друг к другу, а также контролировать трафик между ними.

📝 Создание нескольких Docker сетей:

Сначала создайте сети, которые будут использоваться для разных сервисов. Например, одна сеть для базы данных, другая для веб-приложений. Создаём две сети: db-network для работы с базой данных и web-network для веб-сервисов:

docker network create db-network
docker network create web-network

📝 Запуск контейнеров в разных сетях:

Теперь, при запуске контейнеров, указывайте, к какой сети они будут подключены. Например, контейнер с веб-приложением подключается только к web-network, а контейнер с базой данных — только к db-network.

docker run -d --name db-container --network db-network postgres
docker run -d --name web-container --network web-network nginx

📝 Контроль доступа между сетями:

services:
  db:
    image: postgres
    networks:
      - db-network
  web:
    image: nginx
    networks:
      - web-network
networks:
  db-network:
  web-network:

Контейнеры в разных сетях не могут напрямую обмениваться данными, но вы можете настроить проксирование или другие способы для ограниченного взаимодействия между сервисами. Для этого достаточно использовать docker-compose, чтобы объявить сети и задать, какие сервисы могут взаимодействовать друг с другом.

❗️ Этот подход позволяет ограничить доступ к сервисам, повысив безопасность вашего приложения и упростив конфигурацию изоляции между различными слоями приложения, особенно в многоконтейнерных решениях.

tags: #docker #сети #безопасность

🧭 @recura_tech 🌐 VK 🌐 MAX

Код и команды Docker на тёмном фоне: создание сетей db-network и web-network, запуск контейнеров и фрагмент docker-compose для разделения сервисов.
Пример: команды создания сетей, запуска контейнеров и docker-compose для изоляции сервисов.

Читайте так же