Доступ к работающему контейнеру из контейнера, запущенного через compose

У меня есть докер-контейнер, работающий на хосте, который запускается с помощью стандартной команды «docker run ...». Сеть, в которой он работает, имеет имя по умолчанию «directory_default», где «directory» - это имя текущего каталога.

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

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

Я пробовал установить переменные env в compose и использовать флаг --project-name для установки сети, но не повезло. Я также попытался использовать раздел «сеть» в файле создания, чтобы определить имя сети, которое я вижу при запуске:

docker network ls

но при беге:

docker-compose up -d

затем выдает ошибку:

ERROR: Service "my_service" uses an undefined network "my_already_existing_network that you see from docker network ls"

Вот выходные данные / файлы, которые используются (выполняются в каталоге "test"):

docker network ls
NETWORK ID          NAME                  DRIVER              SCOPE
fc4c3de62436        bridge                bridge              local
db6b28f177d0        test_default          bridge              local
5db4787312e5        host                  host                local
64dfb53be850        none                  null                local

Первый контейнер запускается с помощью команды «docker run ...», как было сказано ранее, из каталога «test». Составной файл выглядит следующим образом:

version: "3"
services:

test_container1:
    networks:
        - test_default 
    image: mytest
    container_name: mytest
    restart: on-failure 
    ports: 
        - "8003:8003"

Я также попытался удалить раздел «сети» выше и вызвать docker-compose с помощью:

--project-name test_default

как описано в документации по составлению. Я не использую режим роя.


person bzo    schedule 19.07.2017    source источник
comment
Не могли бы вы добавить составной файл, сетевую деталь (драйвер). ты используешь режим роя?   -  person Sreeni    schedule 19.07.2017
comment
добавлена ​​деталь в OP   -  person bzo    schedule 19.07.2017


Ответы (1)


Попробуйте это docker-compose: (вам нужно указать, что сеть уже существует)

version: "3"
services:

  test_container1:
      networks:
          - test_default
      image: mytest
      container_name: mytest
      restart: on-failure
      ports:
          - "8003:8003"

networks:
   test_default:
     external: true
person Sreeni    schedule 19.07.2017