Open GuillaumeRossolini opened 11 months ago
same issue also in version 4.23.1
Upgraded from v4.23.0 to v4.25.0, same issue: nothing gets routed to my containers, they aren't logging any hits. Uninstalled Docker Desktop, rebooted the PC and installed v4.25.0 fresh: same issue. Unisntalled v4.25.0, installed v4.24.2 fresh: same issue. Unisntalled v4.24.2, installed v4.23.0 fresh: FIXED.
Windows 10 is fully up to date (22H2 build 19045).
Re-stating the issue with v4.24.0+:
I am using docker stack/swarm services. Anything I look at looks ok, be it docker ps
or Docker Desktop Dashboard. The ports I expect are bound, but the services don't get the inbound trafic and they don't respond.
I also tried docker stack rm
and re-creating my entire stack, networks and all, but no luck.
@flaviosiotto I can't find that version, did you mean 4.24.1 by any chance?
I'm having the same problem with v4.24.x and v4.25.0.
docker swarm init
docker service create --name proxy --publish 4000:80 nginx
docker swarm init
docker service create --name proxy --publish 4000:80 nginx
I also ran a docker service inspect proxy
- identical between v4.23.0 an 4.25.0 (except for ID and timestamps).
In both cases, the endpoint spec says that the port is mapped, but it is inaccessible from the host in V4.25.0.
docker service inspect proxy
in docker desktop V4.25.0:
[
{
"ID": "75ywa8vbx34yj85r6dzshtku7",
"Version": {
"Index": 48
},
"CreatedAt": "2023-11-11T02:12:09.354374035Z",
"UpdatedAt": "2023-11-11T02:12:09.357417547Z",
"Spec": {
"Name": "proxy",
"Labels": {},
"TaskTemplate": {
"ContainerSpec": {
"Image": "nginx:latest@sha256:86e53c4c16a6a276b204b0fd3a8143d86547c967dc8258b3d47c3a21bb68d3c6",
"Init": false,
"StopGracePeriod": 10000000000,
"DNSConfig": {},
"Isolation": "default"
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"RestartPolicy": {
"Condition": "any",
"Delay": 5000000000,
"MaxAttempts": 0
},
"Placement": {
"Platforms": [
{
"Architecture": "amd64",
"OS": "linux"
},
{
"OS": "linux"
},
{
"OS": "linux"
},
{
"Architecture": "arm64",
"OS": "linux"
},
{
"Architecture": "386",
"OS": "linux"
},
{
"Architecture": "mips64le",
"OS": "linux"
},
{
"Architecture": "ppc64le",
"OS": "linux"
},
{
"Architecture": "s390x",
"OS": "linux"
}
]
},
"ForceUpdate": 0,
"Runtime": "container"
},
"Mode": {
"Replicated": {
"Replicas": 1
}
},
"UpdateConfig": {
"Parallelism": 1,
"FailureAction": "pause",
"Monitor": 5000000000,
"MaxFailureRatio": 0,
"Order": "stop-first"
},
"RollbackConfig": {
"Parallelism": 1,
"FailureAction": "pause",
"Monitor": 5000000000,
"MaxFailureRatio": 0,
"Order": "stop-first"
},
"EndpointSpec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 4000,
"PublishMode": "ingress"
}
]
}
},
"Endpoint": {
"Spec": {
"Mode": "vip",
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 4000,
"PublishMode": "ingress"
}
]
},
"Ports": [
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 4000,
"PublishMode": "ingress"
}
],
"VirtualIPs": [
{
"NetworkID": "mopovoesevldk105kayv1khkt",
"Addr": "10.0.0.3/24"
}
]
}
}
]
Likewise, except for IDs and timestamps, the results of docker network inspect ingress
are identical between the 2 versions too.
docker network inspect ingress
in docker desktop V4.25.0:
[
{
"Name": "ingress",
"Id": "mopovoesevldk105kayv1khkt",
"Created": "2023-11-11T02:11:29.374991305Z",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "10.0.0.0/24",
"Gateway": "10.0.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": true,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"a870baa0e93c9961f73891df75e315153a5d8b56ac0773d62668e8711a1dfa46": {
"Name": "proxy.1.wme3fv3wxnpk84cbqgbxd6pwl",
"EndpointID": "2337dcc0d9c07d893c318d7ded33e230d917c00ab897def84437b0626635a448",
"MacAddress": "02:42:0a:00:00:04",
"IPv4Address": "10.0.0.4/24",
"IPv6Address": ""
},
"ingress-sbox": {
"Name": "ingress-endpoint",
"EndpointID": "61c7e7723c472c1ce8f284f7161cbd790d569cd720307ce2ed4f257ec66810f2",
"MacAddress": "02:42:0a:00:00:02",
"IPv4Address": "10.0.0.2/24",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4096"
},
"Labels": {},
"Peers": [
{
"Name": "32c30e955dc5",
"IP": "192.168.65.4"
}
]
}
]
This is also a problem with Docker Desktop for Linux.
I am running into this same issue. It seems docker swarm is broken networking wise above 4.23.
I faced the same issue months ago as well. Thus, I did not upgrade.
However, I just re-installed Docker Desktop, and using the latest version (currently 4.33.1 (161083)
) seems to fix the issue; services can be reached after publishing them.
Description
TL;DR: see @mcgodfrey's comment below for a more succinct description and reproduce steps: https://github.com/docker/for-win/issues/13721#issuecomment-1806636232
The latest v4.24.0 seems to behave differently network-wise from v4.23.0 and all earlier versions, as far as published ports on services inside a stack are concerned.
I'm not sure where the issue is precisely, so I'll try to summarize my observations. I'm opening this mostly to see it that has been identified yet, and I'll share a precise use case if needed.
Reverting back to Docker Desktop v4.23.0 fixes this for me.
Reproduce
Spin up a service inside a stack, and tell the swarm to bind the port 80 in host/vip mode. Something along the lines of:
In my case, after the service is working and I can inspect it with:
Which has the same output for v4.23.0 to v4.24.0:
I can see that the service is healthy and the port is bound
If I then
docker exec...
inside a container (from this service), I can then use curl to browse its own hostname or any alias that was defined on the service. The service itself isn't an issue, it is healthy.However, from WSL I can't do the same:
NB: If I use the short YAML syntax as described above to bind ports, Docker Desktop Dashboard doesn't see it as open but
docker service ls
does. If I use the detailed YAML syntax (see below), it's the other way around. In both cases, v4.23.0 allows me to browse from the host. In neither case v4.24.0 lets me do that.I then uninstalled Docker Desktop v4.24.0, reinstalled v4.23.0, started the app again and my local stack works again, no changes required.
Expected behavior
docker version
docker info
Diagnostics ID
97770725-A6F9-4820-A37B-9641A5FD1CD9/20231004155030
Additional Info
No response