Docker 使用 127.0.0.1 而不是 localhost 连接到 docker swarm 服务

Docker 使用 127.0.0.1 而不是 localhost 连接到 docker swarm 服务

连接到 Docker Swarm 服务已发布端口后挂起。我已使用以下命令部署了 Docker 服务。

docker service create --name my-nginx --replicas 1 --publish published=5033,target=80 nginx;

与端口 5033 的连接挂起,等待响应,见下文。以下命令

wget -v http://localhost:5033/;

收益

--2022-09-21 17:04:41--  http://localhost:5033/
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:5033... connected.
HTTP request sent, awaiting response... ^C

操作系统

$ cat /etc/redhat-release

CentOS Linux release 7.9.2009 (Core)

内核是

$ uname -rv

3.10.0-1160.36.2.el7.x86_64 #1 SMP Wed Jul 21 11:57:15 UTC 2021

Docker 版本是

$ docker version
Client: Docker Engine - Community
 Version:           20.10.18
 API version:       1.41
 Go version:        go1.18.6
 Git commit:        b40c2f6
 Built:             Thu Sep  8 23:14:08 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.18
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.6
  Git commit:       e42327a
  Built:            Thu Sep  8 23:12:21 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.8
  GitCommit:        9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

答案1

启用 ipv6 后,localhost 解析为 ipv6 ::1,因为 ipv6 优先级高于 ipv4。

您可以使用 进行检查ping localhost

如果不使用 ipv6,请禁用它

答案2

当我将“localhost”替换为“127.0.0.1”时,我能够成功建立连接。

似乎应该使用 127.0.0.1 来代替 localhost。

发布此内容以便能够帮助其他人。

相关内容