Docker не может пропинговать локальные сетевые машины по имени хоста - PullRequest
0 голосов
/ 11 ноября 2018

Я перевожу свой веб-сервер и базу данных в контейнеры Docker и использую docker-compose для их запуска, но сталкиваюсь с проблемой. Мой контейнер запускается успешно, однако у меня есть функции, которые пингуют другие серверы на hostname в моей частной сети, и, похоже, они больше не работают, когда они находятся в док-контейнере. Например:

ping other_hostname (cannot reach hostname inside container)

когда я нахожусь вне контейнера и пинг other_hostname он работает нормально.

Я заметил, что когда внутри контейнера я определяю имя хоста следующим образом:

ping other_hostname.home.com (this works inside the container)

Есть ли способ пинговать по имени хоста внутри контейнера?

крепление:

...

/dev/sdb3 on /etc/resolv.conf type btrfs (rw,relatime,space_cache,subvolid=258,subvol=/@/var/lib/docker/containers/13cfa734b33cda82a5e487d5a2a4b9aad2fdefaf844b49a4f92c99c4fd2089b8/resolv.conf)
/dev/sdb3 on /etc/hostname type btrfs (rw,relatime,space_cache,subvolid=258,subvol=/@/var/lib/docker/containers/13cfa734b33cda82a5e487d5a2a4b9aad2fdefaf844b49a4f92c99c4fd2089b8/hostname)
/dev/sdb3 on /etc/hosts type btrfs (rw,relatime,space_cache,subvolid=258,subvol=/@/var/lib/docker/containers/13cfa734b33cda82a5e487d5a2a4b9aad2fdefaf844b49a4f92c99c4fd2089b8/hosts)

...

resolve.conf:

~ $ cat /etc/resolv.conf
search mydomain.com
nameserver 127.0.0.11
options ndots:0

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Добавьте ваш локальный DNS-сервер в файл Docker-контейнера /etc/resolv.conf как

nameserver   dns_server_ip

затем перезапустите докер-контейнер.

0 голосов
/ 11 ноября 2018

Если у вас есть пример docker-compose.yml, как показано ниже, вы можете получить доступ к различным службам по их названию.Докер будет обращаться с ними как с их DNS-именем.

Так что в случае ниже это будет mysql-service и gogs-service

version: '3'

services:
  mysql-service:
    image: mysql
    volumes:
      - ./setup:/docker-entrypoint-initdb.d
      - mysql-data:/var/lib/mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=secret

  gogs-service:
    image: gogs
    volumes:
      - gogs-data:/data
    links:
      - mysql:mysql
    ports:
      - "10022:22"
      - "10000:3000"

volumes:
  mysql-data:
    driver: local
  gogs-data:
    driver: local

надеюсь, что это поможет: -)

...