Skip to content

docker run --ip6 does not work properly when IPv6 prefix is shorter (larger) than /64 #21199

@vfreex

Description

@vfreex

BUG REPORT INFORMATION

Output of docker version:

Client:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   20f81dd
 Built:        Thu Mar 10 15:52:22 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   20f81dd
 Built:        Thu Mar 10 15:52:22 2016
 OS/Arch:      linux/amd64

Output of docker info:

Containers: 3
 Running: 1
 Paused: 0
 Stopped: 2
Images: 49
Server Version: 1.10.3
Storage Driver: devicemapper
 Pool Name: docker-253:0-4980835-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 107.4 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 2.413 GB
 Data Space Total: 107.4 GB
 Data Space Available: 66.86 GB
 Metadata Space Used: 3.715 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.144 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.109 (2015-09-22)
Execution Driver: native-0.2
Logging Driver: json-file
Plugins: 
 Volume: local
 Network: bridge null host
Kernel Version: 4.4.4-301.fc23.x86_64
Operating System: Fedora 23 (Workstation Edition)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 11.61 GiB
Name: rayson-blackchan.localdomain
ID: RUBG:PGRF:DNLS:CFE4:SVH7:EU3U:4R3F:PJBX:GUYM:DEOE:WX7O:YC4Z

Additional environment details (AWS, VirtualBox, physical, etc.):
physical

Steps to reproduce the issue:

  1. Create a new bridge network
sudo brctl addbr br-ctn
docker network create \
  -d bridge --subnet=fd12:3456:7890::/48 --gateway=fd12:3456:7890::1 \
  -o "com.docker.network.bridge.name"="br-ctn" \
  -o "com.docker.network.enable_ipv6"=1 \
  testnet
  1. Launch a container on this network
docker run -ti --net testnet --ip6 fd12:3456:7890:abcd:ef12:3456:7890:abcd debian:7 /bin/bash

Describe the results you received:

The IPv6 address assigned to the container is incorrect.

$ docker network inspect testnet 
[
    {
        "Name": "testnet",
        "Id": "7705574587cd3ba0209b1dfee5257be15a0d135c8a6692464f58f86a82a5263b",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1/16"
                },
                {
                    "Subnet": "fd12:3456:7890::/48",
                    "Gateway": "fd12:3456:7890::1"
                }
            ]
        },
        "Containers": {
            "65b8cb4ef8a98d538b132ada9a61d35a6941105419b480035a04479cb5419819": {
                "Name": "distracted_galileo",
                "EndpointID": "7927f09895017f3998865e1b7dfab1f39d47380fd51f5f01d0972328ab02ee01",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": "fd12:3456:7890:0:ef12:3456:7890:abcd/48"
            }
        },
        "Options": {
            "com.docker.network.bridge.name": "br-ctn",
            "com.docker.network.enable_ipv6": "1"
        }
    }
]

root@65b8cb4ef8a9:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
15: eth0@if16: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fd12:3456:7890:0:ef12:3456:7890:abcd/48 scope global nodad 
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe12:2/64 scope link tentative 
       valid_lft forever preferred_lft forever

Describe the results you expected:
The IPv6 address assigned to my container is fd12:3456:7890:0:ef12:3456:7890:abcd/48, which is not what expected fd12:3456:7890:abcd:ef12:3456:7890:abcd/48.

Additional information you deem important (e.g. issue happens only occasionally):
Always

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions