I am still playing around with my Docker setup (so you might wonder why I this website might be down sometime, this is just because I restart some services ;))
The toughest part was IPv6 so far. But it is working – somehow.
You can’t specify something obvious in a docker-compose.yml like
... ports: - [2000::1]80:80
I won’t talk about the whole findings on Google that are complaining about the issue.
Let’s be constructive:
You need to add a IPv6 subnet to your docker0-bridge interface:
ip -6 r add 2a01:1313:1313:666:1313::/80 dev docker0
You need to change your docker daemon setup to use this subnet, since I am using systemd I’ve created a overriding config file for the docker daemon (eg. /etc/systemd/system/docker.service.d/docker.conf):
[Service] ExecStart=/usr/bin/docker daemon -H fd:// -g /srv/docker-lib --ipv6 --fixed-cidr-v6="2a01:1313:1313:666:1313::/80"
After a service docker restart (plus some docker-compose up -d calls) you are able to use the IPv6 table assigned from the /80 subnet.
To ensure that you’ll always end up with the same IPv6 address you should probably set the mac_address property in the docker compose file.
I did actually some additional tweaking of the nginx proxy by adjusting some nginx templating.
Now I needed to set the AAAA records – and that’s it. 🙂