I ran into a similar problem, maybe it is of help:
My host has a public routable /64 ipv6 subnet assigned. I’ve added
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --fixed-cidr-v6=2607:5300:60:a7bc:2::/80 --ipv6"
to my docker deamon settings to assign a /80 subnet to Docker. The docker container ended up with
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:03
inet addr:172.17.0.3 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: 2607:5300:60:a7bc:2:242:ac11:3/80 Scope:Global
inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:738 (738.0 B) TX bytes:508 (508.0 B)
with 2607:5300:60:a7bc:2:242:ac11:3
being pingable from host machine, but the container not being able to reach outside world. I finally gave the NDP proxy you mentioned above a try, and it did the trick for me:
$ sysctl net.ipv6.conf.eth0.proxy_ndp=1
and
$ ip -6 neigh add proxy 2607:5300:60:a7bc:2:242:ac11:3 dev eth0
Hope that helps,
Holger