Docker 服务可通过127.0.0.1访问,但不能通过本地主机访问
正如标题所说,我遇到了一个奇怪的问题,我可以通过127.0.0.1访问我的服务,但不能通过localhost。应该很容易复制,因为我所做的只是:Docker 服务可通过127.0.0.1访问,但不能通过本地主机访问,docker,networking,docker-swarm,Docker,Networking,Docker Swarm,正如标题所说,我遇到了一个奇怪的问题,我可以通过127.0.0.1访问我的服务,但不能通过localhost。应该很容易复制,因为我所做的只是: 为测试初始化了一个新的swarm:sudo docker swarm init--Advertised addr 127.0.0.1 我使用了127.0.0.1,因为localhost或0.0.0是不允许的值 使用此docker compose文件在端口3000上部署了包含静态服务器的新堆栈: version: '3' services:
sudo docker swarm init--Advertised addr 127.0.0.1
- 我使用了
,因为127.0.0.1
或localhost
是不允许的值0.0.0
version: '3'
services:
app:
image: python:3.7
command: bash -c "python -m http.server 3000"
ports:
- "3000:3000"
127.0.0.1:3000
或0.0.0:3000
访问服务器,但是localhost:3000
刚刚超时。这似乎违反直觉,因为据我所知,localhost
应该自动解析为127.0.0.1
,因为我的hosts文件
我非常确定我的hosts文件是好的,因为如果我部署一个独立的容器,例如sudocker run-d-p8080:8080 trinitronx/pythonsimplehttpserver,它可以通过localhost访问
额外信息
这都是在Fedora 32上运行的。这是我的主机文件:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
以下是sudo docker服务列表的输出:
ID NAME MODE REPLICAS IMAGE PORTS
673bliylh292 temp-stack_app replicated 1/1 python:3.7 *:3000->3000/tcp
当我运行sudo docker network inspect ingress
时,我可以看到我的IP管理(IPAM)有子网10.0.0/24
和网关10.0.0.1
,并且网络在IP127.0.0.1
上列出了一个对等方。如有必要,我可以提供完整的输出。我还可以提供dockerdaemon.json
,如果这也有帮助的话