Maybe not a docker solution, but you could throw pfSense into a VM and do all that from there
I use it (as it's intended) as my firewall, but I used to use these as general purpose network security VMs in the past (just because I know the product well)
So for you: no firewall rules, just setup DNS with pfBlocker (for the advert blocking) and setup the VPN as required...
Just an idea...