Docker 服务可通过127.0.0.1访问,但不能通过本地主机访问

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:

正如标题所说,我遇到了一个奇怪的问题,我可以通过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:
      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
    ,并且网络在IP
    127.0.0.1
    上列出了一个对等方。如有必要,我可以提供完整的输出。我还可以提供docker
    daemon.json
    ,如果这也有帮助的话