Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

gw_priority is ignored on ipv4 network if service also joins an ipv6 network without priority #51999

Copy link
Copy link

Description

@stavros-k
Issue body actions

Description

Looks like there is a FIXME regarding this in-code (

// FIXME(robmry) - this means a dual-stack gateway is preferred over single-stack
// gateways with higher gateway-priorities. A dual-stack network should probably
// be preferred over two single-stack networks, if they all have equal priorities.
// It'd probably also be better to use a dual-stack endpoint as the gateway for
// a single address family, if there's a higher-priority single-stack gateway for
// the other address family. (But, priority is currently a Sandbox property, not
// an Endpoint property. So, this function doesn't have access to priorities.)
)
Initial report was done in compose (docker/compose#13511 (comment))

Reproduce

networks:
  maclvanv4:
    driver: macvlan
    enable_ipv6: false
    driver_opts:
      parent: br1
    ipam:
      config:
        - subnet: 10.20.30.0/24
          gateway: 10.20.30.1
  internalv4:
    driver: bridge
    enable_ipv6: false

services:
  bash:
    image: bash
    command: ip r
    networks:
      internalv4:
      maclvanv4:
        ipv4_address: 10.20.30.156
        gw_priority: 1000
        priority: 1000

Gives

bash-1  | default via 10.20.30.1 dev eth0
bash-1  | 10.20.30.0/24 dev eth0 scope link  src 10.20.30.156
bash-1  | 172.16.5.0/24 dev eth1 scope link  src 172.16.5.2
bash-1 exited with code 0

networks:
  maclvanv4:
    driver: macvlan
    enable_ipv6: false
    driver_opts:
      parent: br1
    ipam:
      config:
        - subnet: 10.20.30.0/24
          gateway: 10.20.30.1
  internalv4:
    driver: bridge
    # enable_ipv6: false

services:
  bash:
    image: bash
    command: ip r
    networks:
      internalv4:
      maclvanv4:
        ipv4_address: 10.20.30.156
        gw_priority: 1000
        priority: 1000

Gives

bash-1  | default via 172.16.5.1 dev eth0
bash-1  | 10.20.30.0/24 dev eth1 scope link  src 10.20.30.156
bash-1  | 172.16.5.0/24 dev eth0 scope link  src 172.16.5.2
bash-1 exited with code 0

Via docker run:

Both IPv4

truenas_admin@prometheus[~]$ sudo docker network create --driver bridge --ipv6=false --ipv4=true internal
9e407d74b51752b4ddeb147ee7eb0de334e26ef1e1d8aee12ced9ef3ff18df70

truenas_admin@prometheus[~]$ sudo docker network create --driver macvlan --subnet=10.20.30.0/24 --gateway=10.20.30.1 -o parent=br1 --ipv6=false --ipv4=true maclvan
7b2dc465e8da616cb0a77fbafc912bdeb180fcbb0e1dc371a1bb6e4c428bd2d5

truenas_admin@prometheus[~]$ sudo docker run --rm \
  --network name=maclvan,gw-priority=1000 \
  --network internal \
  bash ip r
default via 10.20.30.1 dev eth1
10.20.30.0/24 dev eth1 scope link  src 10.20.30.2
172.16.5.0/24 dev eth0 scope link  src 172.16.5.2

One IPv6

truenas_admin@prometheus[~]$ sudo docker network create --driver bridge --ipv6=true --ipv4=true internal
2c90ee776b0847270b92cb2d77eb69d599afe026e7485c7e53107a03c9677cfc

truenas_admin@prometheus[~]$ sudo docker network create --driver macvlan --subnet=10.20.30.0/24 --gateway=10.20.30.1 -o parent=br1 --ipv6=false --ipv4=true maclvan
8195c1746b73915b2cf93bf35fc2eccf3c5f3e23be4854bbc1c91602aa94c1c3

truenas_admin@prometheus[~]$ sudo docker run --rm \
  --network name=maclvan,gw-priority=1000 \
  --network internal \
  bash ip r
default via 172.16.5.1 dev eth1
10.20.30.0/24 dev eth0 scope link  src 10.20.30.2
172.16.5.0/24 dev eth1 scope link  src 172.16.5.2

Expected behavior

No response

docker version

Client: Docker Engine - Community
 Version:           28.3.1
 API version:       1.51
 Go version:        go1.24.4
 Git commit:        38b7060
 Built:             Wed Jul  2 20:57:06 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          28.3.1
  API version:      1.51 (minimum version 1.24)
  Go version:       go1.24.4
  Git commit:       5beb93d
  Built:            Wed Jul  2 20:57:06 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.27
  GitCommit:        05044ec0a9a75232cad458027ca83437aae3f4da
 runc:
  Version:          1.2.5
  GitCommit:        v1.2.5-0-g59923ef
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

docker info

Client: Docker Engine - Community
 Version:    28.3.1
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.25.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.38.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 29
  Running: 29
  Paused: 0
  Stopped: 0
 Images: 32
 Server Version: 28.3.1
 Storage Driver: overlay2
  Backing Filesystem: zfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 CDI spec directories:
  /etc/cdi
  /var/run/cdi
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2 nvidia
 Default Runtime: nvidia
 Init Binary: docker-init
 containerd version: 05044ec0a9a75232cad458027ca83437aae3f4da
 runc version: v1.2.5-0-g59923ef
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.12.33-production+truenas
 Operating System: Debian GNU/Linux 12 (bookworm)
 OSType: linux
 Architecture: x86_64
 CPUs: 16
 Total Memory: 62.63GiB
 Name: truenas
 ID: af416a29-e97e-48c4-a294-35253e26efb6
 Docker Root Dir: /mnt/.ix-apps/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  ::1/128
  127.0.0.0/8
 Live Restore Enabled: false
 Default Address Pools:
   Base: 172.16.0.0/12, Size: 24

Additional Info

No response

Reactions are currently unavailable

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/networkingNetworkingNetworkingkind/bugBugs are bugs. The cause may or may not be known at triage time so debugging may be needed.Bugs are bugs. The cause may or may not be known at triage time so debugging may be needed.status/confirmed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    Morty Proxy This is a proxified and sanitized view of the page, visit original site.