Тема: А есть тут спецы по docker?

Hybrid View

  1. Question А есть тут спецы по docker?

    Есть нетривиальная задачка.
    Криво работает DNS внутри docker-network. Есть кто понимающий?

    Если кратко - есть 2 контейнера, которые генерит один docker-compose.yml.
    В docker-compose есть явное указание для сети:
    Код:
    networks:
      default:
        external:
          name: host-network
    Контейнеры задаются с явным container_nane (пусть будет app и db)

    Дальше начинается "шаманство". До этого всё это крутилось на другом хосте. Там всё работало без проблем. При переносе на новый хост начались "чудеса".
    В конфиге app в DSN базы указано: host=db;
    Но... То коннектится, то нет (примерно 50/50).
    Если указать хоть внешний (порт смэплен наружу - так надо), хоть внутренний IP (контейнера db) в DSN - всё работает чётко и без проблем. Но если именно имя в рамках docker network - то 50/50.

    Есть мысли где копать?
    Жизнь коротка. Потерпи немножко.
    Бог один. Просто протоколы доступа разные...

  2. #2
    Регистрация
    02-03-2008
    Адрес
    НН
    Возраст
    40
    Сообщения
    15,697
    Благодарность
    4,397
    Поблагодарили 6,565 раз в 3,354 сообщениях
    Трасировку кинь. Тут роскомпозор панику наводит так, что часть сетей отваливаются.
    Таки да.

  3. На провайдера услуги не завязано? Не в нем проблема?

  4. Залогиниться на хосты и попинговать не пробовал?

  5. #5
    Регистрация
    11-02-2007
    Адрес
    Нижний Новгород, РФ
    Возраст
    51
    Сообщения
    26,132
    Благодарность
    11,656
    Поблагодарили 9,649 раз в 4,588 сообщениях
    Зависимость контейнеров одного от другого проставлена?
    Как так-то?!

  6. Да. Пробовал убирать - не влияет.
    Жизнь коротка. Потерпи немножко.
    Бог один. Просто протоколы доступа разные...

  7. Всем ответившим выше про РКН, провайдера и тд: это docker. И его внутренняя сеть. Всё в рамках ОДНОГО хоста. Поэтому любые "блокировки РКН", "доступность между хостами" и прочее - это вообще не об этом.

    ping таже ходит нестабильно.
    Причина в целом понятна - это "криво" работает внутренний resolv в рамках host-network, но вот почему это происходит - категорически непонятно. Особенно учитывая, что "то работает, то нет".
    Жизнь коротка. Потерпи немножко.
    Бог один. Просто протоколы доступа разные...

  8. Пропиши внутри контейнеров в /etc/hosts статические адреса.

  9. Одобрили:
    AlexeyS  (13-07-2022),   uhta  (13-07-2022)  

  10. Решение "в лоб" - не проблема (уже сделано).
    Я хочу понять "с какого икса такое вообще случилось".
    Жизнь коротка. Потерпи немножко.
    Бог один. Просто протоколы доступа разные...

  11. #10
    Регистрация
    19-01-2006
    Адрес
    Нижний
    Сообщения
    4,900
    Благодарность
    1,188
    Поблагодарили 2,392 раз в 1,239 сообщениях
    возможно какие то нюансы связанные с версией compose файла
    я никогда не прописывал отдельно сеть и по докам это не нужно. Контейнеры, поднятые из одного композ файла попадают в общую сеть и резолвят друг друга по имени
    https://docs.docker.com/compose/networking/

    или задача несколько сложнее чем в посте и нужна сложная топология?

  12. #11
    Регистрация
    19-01-2006
    Адрес
    Нижний
    Сообщения
    4,900
    Благодарность
    1,188
    Поблагодарили 2,392 раз в 1,239 сообщениях
    почитал еще немного про networking.
    Очевидно что написанного тобой мало для понимания ситуации.
    Для чего используется external сеть?
    прописана ли она у обоих контейнеров?
    и т.п.

    может просто в версии compose файла дело

    version: "2.4"
    networks:
    outside:
    external:
    name: actual-name-of-network

    Not supported for version 2 docker-compose files. Use network_mode instead.

  13. Оба этих контейнера из одного docker-compose.
    External network используется, так как там микросервисная архитектура и там есть ещё кучка сервисов (поднимаемых в других compose), которые должны видеть и эти контейнеры тоже. Исходя из целей безопасности - часть контейнеров вообще "не светит" наружу. Ибо нефиг.

    docker-compose тут простой до тупизны:
    Код:
    version: '3.7'
    
    services:
      db:
        image: registry/image-db
             container_name: db
             restart: always
             environment:
                 ....
            volumes:
                 ....
    
      app:
             image: registry/image-app
             container_name: app
             restart: always
             volumes:
                 ...
             depends_on:
                - db
    
    networks:
       default:
         external:
           name: host-network
    Жизнь коротка. Потерпи немножко.
    Бог один. Просто протоколы доступа разные...

  14. #13
    Регистрация
    19-01-2006
    Адрес
    Нижний
    Сообщения
    4,900
    Благодарность
    1,188
    Поблагодарили 2,392 раз в 1,239 сообщениях
    вряд ли в этом дело но я бы переписал в соответствии с доками порядка для
    networks:
    default:
    name: host-network
    external: true

    Самое первое предположение, раз конфиг из многих модулей в одной сети, где то еще есть контейнер с именем db и айпишник нормально не резолвится.
    пробовал дать контейнеру уникальное имя? Уходит проблема?

    А если по порядку разбираться то надо понять что же все таки резолвится по имени db, когда проблема есть

    в моем случае все совпало

    из докера приложения:
    bash-5.0$ ping docker_influxdb_1
    PING docker_influxdb_1 (172.18.0.2): 56 data bytes

    с хоста
    ~]$ sudo docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{ {end}}' bbd32b52b251
    172.18.0.2

  15. inspect выдаёт IP как и должен.
    ping ходит стабильно.
    Но приложение резолвит через раз. В этом и загадка

    Имя контейнера уникально. И если делать что-то типа nslookup - резолвит верно.
    Жизнь коротка. Потерпи немножко.
    Бог один. Просто протоколы доступа разные...

  16. #15
    Регистрация
    19-01-2006
    Адрес
    Нижний
    Сообщения
    4,900
    Благодарность
    1,188
    Поблагодарили 2,392 раз в 1,239 сообщениях
    docker:/etc/resolv.conf проверяли?

  17. Да. Там всё ок.

    Я ж говорю - "визуально" вообще всё ок - все конфиги "как и должно", ping ходит... но из приложения - то да, то нет.
    Жизнь коротка. Потерпи немножко.
    Бог один. Просто протоколы доступа разные...

  18. #17
    Регистрация
    19-01-2006
    Адрес
    Нижний
    Сообщения
    4,900
    Благодарность
    1,188
    Поблагодарили 2,392 раз в 1,239 сообщениях
    сдаюсь ))
    пойду свои загадки разгадывать

Информация о теме

Users Browsing this Thread

Пользователей, читающих тему - 1. (зарегистрированных - 0, гостей - 1)

Пользователей, прочитавших эту тему : 1

Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать на сообщения
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •