Соединение контейнера Redis с другим контейнером (Docker) - PullRequest
0 голосов
/ 12 октября 2018

Итак, я делаю проект, в котором у меня есть два контейнера Docker, один для основного приложения и один для redis (используя, кстати, docker compose).Естественно, я хотел соединить оба и попробовал настройку связывания по умолчанию, но, конечно, приложение не могло подключиться к БД из-за того, что они были в двух разных контейнерах.Тогда я просто пошел с 0.0.0.0 после прочтения это .Однако мне все еще хочется спросить, есть ли способ привязать redis к моей локальной сети, чтобы подключаться могли только машины, работающие внутри нее.Тем не менее, мне все еще хочется спросить, есть ли способ привязать redis к моей локальной сети, чтобы подключаться могли только машины, работающие внутри него.

Это на самом деле не то, чтоЯ хочу.Может быть, включить что-то вроде this ?

У кого-нибудь есть хорошее решение о том, как я могу заставить redis принимать только соединения из другого контейнера (связанные с помощью docker compose) или привязывать redis к 0.0.0.0а применение строгих мер безопасности - единственный выход?

Заранее спасибо!

1 Ответ

0 голосов
/ 12 октября 2018

Легко сделать размещенную в Docker службу доступной только для других контейнеров на том же хосте.Если вы:

  1. Установите для сервера привязку или прослушивание 0.0.0.0 или :: 0 (все адреса);
  2. Создайте сеть Docker не по умолчанию (Docker Compose будетсделать это автоматически);
  3. Запустить контейнер сервера и все связанные клиентские контейнеры в этой сети Docker (Docker Compose сделает это по умолчанию);и
  4. Если не установить docker run -p или Docker Compose ports: параметр

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

Если у вашего хоста несколько сетевых интерфейсов, и привязка к одному из них сделает службу «частной», тогда выможет сделать то же самое с docker run -p.Если ваш хост имеет публичный IP-адрес 10.20.30.40/16, а также частный IP-адрес 192.168.144.128/24, то docker run -p 192.168.144.128:6379:6379 сделает его доступным для частной сети (и других контейнеров Docker, как указано выше), но не для публичной сети.(Сам сервер внутри контейнера все еще должен привязываться к 0.0.0.0.)

Если в противном случае вам нужно, чтобы сервер был виден вне хоста, но только с некоторыми IP-адресами, я думаю, выдо iptables волшебство, которое не является родным для Докера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...