У меня есть существующее приложение, состоящее из 4 контейнеров докеров, работающих на одном хосте. Они связаны между собой командой link
.Докеры, связанные с контейнерами, Docker Networks, Compose Networks - как мы должны теперь связывать контейнеры
Однако после некоторых обновлений докеров поведение link
было устаревшим и изменилось. У нас возникают проблемы, когда контейнеры теряют связь друг с другом.
Итак, докер говорит, что использует новую функцию Network
над link
ed контейнерами. Но я не вижу, как это работает.
Если 2 контейнера находятся в одной и той же сети, то те же самые ENV
vars автоматически отображаются на контейнерах, как если бы они были связаны?
Или файл hosts обновлен корректным содержимым контейнера/IP-адресами? Даже после docker restart
?
Я не вижу в документах, как контейнер может найти местоположение другого в своей сети?
Кроме того, compose
выглядит как простая настройка для связывания контейнеров и может автоматизировать некоторые из них - будет ли это способ выбора для определения нескольких контейнерных приложений? Или это слишком рано, чтобы запустить его в производство?
Есть ли compose
поддержка нескольких конфигураций хоста?
в какой-то момент в будущем мы, вероятно, нужно переместить один из контейнеров в другой хост ....
удивительным, спасибо за подробные ответы. Я рассмотрю еще раз, когда мы перейдем к настройке нескольких хостов, но на данный момент это похоже на то, что файл hosts - это путь вперед ... –
Как вы узнаете порт, который был выставлен контейнером? Скажем, у меня есть 2 контейнера, a, который отображает порт 7474 и b. B может найти A через файл 'hosts' - http: // a, но есть ли способ обнаружить порт, который отображается? С 'link' вы можете проверить env var .... –
В сети нет перевода порта. Порт может быть другим, только если вы _publish_ порт контейнера на хосте Docker, а не когда вы просто _expose_ порт – Thomasleveil