ping из docker контейнер не может достичь внешних хостов - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь проверить связь с контейнером docker, работающим вместе с другими службами, управляемыми с помощью docker -compose. Основным требованием c является подключение к внешним серверам БД, которые не работают. Для отладки я попытался пропинговать внешний ящик, который, как и ожидалось, не возвращается. Однако я могу пропинговать внешний ящик с хоста vm.

В /etc/hosts есть запись, как я указал в следующей строке в docker -compose.yml

extra_hosts:
     - "externalhostname:10.40.154.27"

С docker проверьте следующие данные сети

"Networks": {
        "echo_service_default": {
            "IPAMConfig": null,
            "Links": null,
            "Aliases": [
                "python-interpreter",
                "3767f3a7ad80"
            ],
            "NetworkID": "10ca2ec9a1dbc3659cef91014c2c64c8df17e9d720350d1bdd198a53c6c0a946",
            "EndpointID": "c920443c34ff00ffefe2c669bc4b80e121c27d1b8ebc44fa9f5efb16e71561a4",
            "Gateway": "172.19.0.1",
            "IPAddress": "172.19.0.6",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "MacAddress": "02:42:ac:13:00:06",
            "DriverOpts": null
        }

ifconfig в хосте дает

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:b6ff:fe86:fb71  prefixlen 64  scopeid 0x20<link>
        ether 02:42:b6:86:fb:71  txqueuelen 0  (Ethernet)
        RX packets 204  bytes 90455 (88.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5080  bytes 459752 (448.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Запись службы из docker -compose.yml

  python-interpreter:
image: image name
hostname: python-interpreter
volumes:
 - /scratch/share:/var/python-interpreter/data:ro
 - shared:/var/shared
extra_hosts:
 - "externalhostname:10.40.154.27"

поэтому служба работает с мостовой сетью без опции -p

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

похоже, он работает сейчас .. я перешел в режим хоста

python-interpreter:
      image: ...
    hostname: ...
    **network_mode: host**
    volumes:
     ...
    extra_hosts:
     - "whf00aqw.in.oracle.com:10.40.154.27"

Я верю (не уверен.), Потому что он собирался соединиться, он ограничивал доступ к сети внутри хоста. Теперь, когда я сделал его хостом, он может совместно использовать сеть хоста и иметь доступ.

0 голосов
/ 19 февраля 2020

В docker -compose.yml, которым вы поделились, у службы python -interpreter есть определение extra_hosts, но не определение сети, вам нужно определить сеть, например:

  python-interpreter:
image: image name
hostname: python-interpreter
volumes:
- /scratch/share:/var/python-interpreter/data:ro
- shared:/var/shared
networks:
  - backend      

И определите сеть в конце вашего docker -compose.yml:

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