我正在将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
答案 0 :(得分:0)
如果您有一个类似下面的docker-compose.yml
示例,则可以按名称访问不同的服务。 Docker会将它们当作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
希望它会有所帮助:-)
答案 1 :(得分:0)
将本地dns服务器添加为docker容器/etc/resolv.conf
文件,
nameserver dns_server_ip
然后重新启动Docker容器。