Docker无法按主机名ping本地网络机器

时间:2018-11-11 03:36:09

标签: docker docker-compose ping

我正在将Web服务器和数据库迁移到Docker容器中,并使用docker-compose启动它们,但遇到问题。我的容器成功启动,但是,我具有在我的专用网络中通过hostname ping其他服务器的功能,而在Docker容器中时,该功能似乎不再起作用。例如:

ping other_hostname (cannot reach hostname inside container)

当我在容器外并ping other_hostname时,它可以正常工作。

我确实注意到,当我在容器中放入合格的主机名时,如下所示:

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

在容器中时,是否可以通过主机名ping通?

安装:

...

/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 :(得分:0)

如果您有一个类似下面的docker-compose.yml示例,则可以按名称访问不同的服务。 Docker会将它们当作dns名称。

因此在下面的情况下,它将是mysql-servicegogs-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

希望它会有所帮助:-)

答案 1 :(得分:0)

将本地dns服务器添加为docker容器/etc/resolv.conf文件,

nameserver   dns_server_ip

然后重新启动Docker容器。