контейнеры не общаются в сети в docker-compose - PullRequest
0 голосов
/ 13 февраля 2019

У меня проблема с сетью Docker-compose.Поэтому я создаю общее пространство с контейнерами для ubuntu, tensorflow и Rstudio, которые отлично справляются с распределением тома между ними и хостом, но когда дело доходит до использования ресурсов одного контейнеравнутри терминала друг друга я врезался в стену.Я не могу сделать так же мало, как вызов python в терминале контейнера, в котором его нет.Мой docker-compose.yaml:

# docker-compose.yml

version: '3'
services:

#ubuntu(16.04)
 ubuntu:
   image: ubuntu_base
   build:
     context: .
     dockerfile: dockerfileBase 
   volumes:
     - "/data/data_vol/:/data/data_vol/:Z"
   networks:
     - default
   ports:
     - "8081:8081"
   tty: true

#tensorflow
 tensorflow:
   image: tensorflow_jupyter
   build:
     context: .
     dockerfile: dockerfileTensorflow
   volumes:
     - "/data/data_vol/:/data/data_vol/:Z"
     - .:/notebooks
   networks:
     - default
   ports:
     - "8888:8888"
   tty: true

#rstudio
 rstudio:
   image: rstudio1
   build:
     context: .
     dockerfile: dockerfileRstudio1
   volumes:
     - "/data/data_vol/:/data/data_vol/:Z"
   networks:
     - default
   environment:
     - PASSWORD=test
   ports:
     - "8787:8787"
   tty: true


volumes:
  ubuntu:
  tensorflow:
  rstudio:

networks:
  default: 
    driver: bridge

Я новичок в докере, поэтому я не уверен в своих настройках сети.При этом docker inspect composetest_default (сеть по умолчанию, созданная для compose) показывает, что контейнеры подключены к сети.Насколько я понимаю, в такой ситуации у меня должна быть возможность свободно вызывать одну службу в каждом из других контейнеров и наоборот:

"Containers": {
            "83065ec7c84de22a1f91242b42d41b293e622528d4ef6819132325fde1d37164": {
                "Name": "composetest_ubuntu_1",
                "EndpointID": "0dbf6b889eb9f818cfafbe6523f020c862b2040b0162ffbcaebfbdc9395d1aa2",
                "MacAddress": "02:42:c0:a8:40:04",
                "IPv4Address": "192.168.64.4/20",
                "IPv6Address": ""
            },
            "8a2e44a6d39abd246097cb9e5792a45ca25feee16c7c2e6a64fb1cee436631ff": {
                "Name": "composetest_rstudio_1",
                "EndpointID": "d7104ac8aaa089d4b679cc2a699ed7ab3592f4f549041fd35e5d2efe0a5d256a",
                "MacAddress": "02:42:c0:a8:40:03",
                "IPv4Address": "192.168.64.3/20",
                "IPv6Address": ""
            },
            "ea51749aedb1ec28f5ba56139c5e948af90213d914630780a3a2d2ed8ec9c732": {
                "Name": "composetest_tensorflow_1",
                "EndpointID": "248e7b2f163cff2c1388c1c69196bea93369434d91cdedd67933c970ff160022",
                "MacAddress": "02:42:c0:a8:40:02",
                "IPv4Address": "192.168.64.2/20",
                "IPv6Address": ""
            }

Предыстория - я пробовал с links: внутри docker-compose, но решил изменить на networks: из-за некоторых предупреждений об устаревании.Был ли это правильный путь?

Версия Docker 18.09.1 ​​

Версия Docker-compose 1.17.1

1 Ответ

0 голосов
/ 13 февраля 2019

но когда дело доходит до использования ресурсов одного контейнера внутри терминала друг друга, я врезаюсь в стену.Я не могу сделать так же мало, как вызов python в терминале контейнера, в котором его нет.

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

Путь к корзине:

$ echo $PATH                                                                                                                                                                                              127 ↵
/home/exadra37/bin:/home/exadra37/bin:/home/exadra37/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

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

...