docker-compose простой сетевой демо - PullRequest
0 голосов
/ 25 января 2019

Я новичок в docker и docker-compose, и я пытаюсь понять работу сети в docker.У меня есть следующий файл docker-compose.yml

version: '3'

services:
  app0:
    build:
      context: ./
      dockerfile: Dockerfile0
  app1:
    build:
      context: ./
      dockerfile: Dockerfile1

И файлы Docker выглядят так:

FROM: python:latest

Я использую образ Python, потому что это то, что я хочу для моего реального использования-case.

Я запускаю

docker-compose build
docker-compose up

output:

Building app0
Step 1/1 : FROM python:latest
 ---> 3624d01978a1
Successfully built 3624d01978a1
Successfully tagged docker_test_app0:latest
Building app1
Step 1/1 : FROM python:latest
 ---> 3624d01978a1
Successfully built 3624d01978a1
Successfully tagged docker_test_app1:latest

Starting docker_test_app0_1 ... done
Starting docker_test_app1_1 ... done
Attaching to docker_test_app0_1, docker_test_app1_1
docker_test_app0_1 exited with code 0
docker_test_app1_1 exited with code 0

Из того, что я прочитал, docker-compose создаст сеть по умолчанию, и оба контейнера будутподключен к этой сети и должен иметь возможность общаться.Я хочу создать очень простую демонстрацию этого, например, используя ping, например:

docker-compose run app0 ping app1

output:

ping: app1: Name or service not known

Неужели я не понимаю, как работает сетевое соединение в Docker?Могу ли я пинговать app1 из app0 и наоборот?

, работающий на Amazon Amazon.версия docker-compose версия 1.23.2, сборка 1110ad01

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Вам нужно что-то добавить (скрипт, через CMD) к тем контейнерам Python, которые поддерживают их работу, что-то прослушивающее через порт или простой цикл.

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

0 голосов
/ 25 января 2019

Определение сервисов в файле docker-composer.yaml может быть недостаточно, если один сервис будет недоступен, а другой не будет иметь информацию о его IP-адресе.

Однако вы можете создать зависимость между ними, которая, например, позволит экземпляру автоматически запускать службу app1 при запуске app0.

Установить следующую конфигурацию:

version: '3'

services:
  app0:
    build:
      context: ./
      dockerfile: Dockerfile0
    depends_on:
      - "app1"
  app1:
    build:
      context: ./
      dockerfile: Dockerfile1

Это хорошая практика, если вы хотите, чтобы службы взаимодействовали друг с другом.

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