2017-01-02 4 views
0

Я пытаюсь установить связь между двумя контейнерами, но не могу сделать то же самое. Я добавляю службу с именем «server» в файле docker в зависимости от другой службы с именем «конечная точка». Я должен передать IP и порт «конечной точки» на «сервер», и я делаю то же самое, как показано нижеОшибка сокета Docker Compose V2

command: -userver -e endpoint:51393 

Но теперь я не вижу «конечной точки» в списке хостов с помощью следующей команды:

docker-compose exec server cat /etc/hosts 

Вот результат:

127.0.0.1  localhost 
::1  localhost ip6-localhost ip6-loopback 
fe00::0 ip6-localnet 
ff00::0 ip6-mcastprefix 
ff02::1 ip6-allnodes 
ff02::2 ip6-allrouters 
172.21.0.3  49f4808fa677 

Мой Полный докер-compose.yml файл, как показано ниже:

version: '2' 

services: 
    endpoint: 
    build: 
     context: . 
     dockerfile: Dockerfile 
    image: myimage_end:0.1 
    command: -uendpoint 
    ports: 
     - 51393:51393 
    networks: 
     - internal 

    server: 
    build: 
     context: . 
     dockerfile: Dockerfile 
    image: myimage_server:0.1 
    command: -userver -e endpoint:51393 
    ports: 
     - 51392:51392 
    depends_on: 
     - endpoint 
    networks: 
     - internal 
    volumes: 
     - /local_path/dataset:/dataset 

networks: 
    internal: 
    driver: bridge 

ответ

2

Когда вы используете текущую версию докерера, достижение одного контейнера из другого больше не выполняется путем манипулирования файлом hosts контейнера, потому что это довольно статическая настройка.

В настоящее время docker-compose использует какой-либо сервис dns, который позволяет всем контейнерам в одной сети видеть друг друга под их служебными именами. Это позволяет останавливать зависимые контейнеры, не заставляя зависящий контейнер также останавливаться/перезапускаться. Для этого вам также не нужно указывать depends_on. Это необходимо только для запуска перезапуска зависимой службы при перезапуске зависимостей.

Для получения более подробной информации, пожалуйста, ознакомьтесь с docker-compose docs о сети.

Некоторые команды для отладки вашей ситуации:

docker-compose exec server nslookup endpoint 

docker inspect <container_name_of_service> 
+0

спасибо за информацию, я получил его решить прямо сейчас. привет! – ankitkamboj