Мой docker не может подключиться к inte rnet - даже с правильным DNS - PullRequest
1 голос
/ 05 августа 2020

Я использую контейнер docker на CentOS Linux выпуска 8.2.2004. Сам CentOs Server имеет стабильное соединение inte rnet. В конечном итоге я пытаюсь запустить контейнер docker со следующим docker -compose.yaml

version: '3'
services:
  postgres:
    restart: always
    image: postgres:12.1
    environment:
      POSTGRES_PASSWORD: myusername
      POSTGRES_USER: mypass
    networks:
      - myname
    volumes:
      - /home/user/data/myname:/var/lib/postgresql/data
    ports:
      - 5432:5432
  web:
    restart: always
    build: .
    environment:
      JPDA_ADDRESS: 8001
      JPDA_TRANSPORT: dt_socket
    networks:
      - myname
    depends_on:
      - postgres
    ports:
      - 80:8080
      - 8001:8001
    volumes:
    - /home/user/data/images:/data/images
networks:
  myname:
    driver: bridge

Но после docker-compose build репозитории maven не могут быть достигнуты (из-за отсутствия подключения inte rnet из с в docker). Добавление правил DNS в yaml ничего не меняет, как и установка network_mode: "host"

Когда я пытаюсь выполнить

docker run --dns 8.8.8.8 busybox nslookup google.com
;; connection timed out; no servers could be reached

При попытке выполнить обычный пинг соединение не удается тоже

docker run -it busybox ping -c 1 8.8.8.8
1 packets transmitted, 0 packets received, 100% packet loss

Однако

docker run --rm -it busybox ping 172.17.0.1

кажется, работает нормально.

docker run --net=host -it busybox ping -c 1 8.8.8.8  

Тоже работает

как я могу получить docker для подключения к inte rnet?

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Похоже, это известная проблема с busybox. Проверьте эту ветку здесь: nslookup не может получить служебный IP-адрес на последней версии busybox

Короче говоря, вы должны использовать версии busybox до 1.28.4. Я только что выполнил следующую команду на CentOS 7 с Docker 19, и она сработала нормально:

# docker run --dns 8.8.8.8 busybox:1.28.0 nslookup google.com

Server:    8.8.8.8
Address 1: 8.8.8.8 dns.google

Name:      google.com
Address 1: 2a00:1450:4016:807::200e muc11s04-in-x0e.1e100.net
Address 2: 216.58.207.174 muc11s04-in-f14.1e100.net
0 голосов
/ 05 августа 2020

Мне пришлось переписать раздел сборки в docker -compose.yaml следующим образом, чтобы решить проблему

    build:
      context: .
      network: host
...