我试图从一个docker容器中访问一个命名的postgres服务器。我可以通过服务器的IP地址访问它,但不能访问它的名字。我试过 --net=host
和 -p ServerName:5432:5432
上的选项 docker run
命令。
我将演示这个问题。
# on the host
$ ping ServerName
# This works
$ ping 10.1.1.25
# Works
# Then enter container with:
$ winpty docker exec -it containerName bash
$ ping 10.1.1.25
# Works
$ ping ServerName
# Does NOT work
我猜我需要给docker提供某种映射 从主机的网络知识到容器的映射。我猜想这将是通过网络功能,但我找不到任何我理解的说明。
在任何人建议之前,postgres实例不能被移动,包括被移动到它自己的docker容器中。
输出的 docker ps
是的,我想从docker容器内访问一个命名的postgres服务器。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15c7903f7ccd imageName "tail -f /dev/null" 47 minutes ago Up 47 minutes 0.0.0.0:5432->5432/tcp, 0.0.0.0:8000->8888/tcp containerName
解决了。我需要使用 --dns
选项中 docker run
命令,然后,在容器内,我需要使用完全限定的名称,即 然后,在容器内,我需要使用完全限定的名称,即 serverName.companyName.com
而不是仅仅使用 serverName
.
感谢@Dupinder Singh给我指出了一些有用的DNS文章(见问题评论)。