Имена контейнеров Docker - PullRequest
       7

Имена контейнеров Docker

0 голосов
/ 25 августа 2018

Я использую проект Docker on Rails.Я нашел только один способ надежно связать сервисы друг с другом, то есть, указав имя контейнера в docker-compose.yml:

version: '3'
services:
  db:
    container_name: sociaball_db
    ...
  web:
    container_name: sociaball_web
    ...
  sphinx:
    container_name: sociaball_sphinx
    ...

Так что теперь я могу написать что-то вроде этого в database.yml и перестать беспокоиться о, скажем, базе данныхконтейнер случайным образом меняет свое имя с db на db_1:

common: &common
  ...
  host: sociaball_db

Однако я могу одновременно запускать только три контейнера.Всякий раз, когда я пытаюсь запустить docker-container up, если некоторые контейнеры не работают, это вызывает ошибку.

ERROR: for sociaball_db  Cannot create container for service db: Conflict. The container name "/sociaball_db" is already in use by container "ee787c06db7b2a0205e3c1e552b6a5496545a78fe12d942fb792b27f3c38769c". You have to remove (or rename) that container to be able to reuse that name.

Это очень неудобно.Это часто приводит к явному удалению всех контейнеров, чтобы убедиться, что у них нет возможности сломаться.Есть ли способ обойти это?

1 Ответ

0 голосов
/ 26 августа 2018

При запуске нескольких контейнеров из одного составного файла будет сеть по умолчанию, в которой все контейнеры присоединены (если не указано иное).

Нет необходимости ссылаться на контейнер по его контейнеру или имени хостаas docker-compose автоматически настраивает обнаружение некоторых служб DNS, где каждая служба docker-compose может быть разрешена по имени службы (ключ используется на уровень ниже services:.

Таким образом, ваша служба с именем web может достичьваша база данных использует имя db. Не нужно указывать имя контейнера для этого варианта использования. Для получения более подробной информации смотрите документацию докера по сети , которая также демонстрирует приложение rails, обращающееся к базе данных.

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