Original idea borrowed from https://github.com/dperson/openvpn-client
- You should add the generated openvpn client config to a directory, you can call it client.ovpn
- You should add the password for the private key in the
client.ovpn
toclient.pwd
- Run the following, I recommend adding
--auth-nocache
docker run -d --name vpn-client \
--cap-add=NET_ADMIN \
--device /dev/net/tun \
-v /path/with/vpn/configs:/vpn \
ekristen/openvpn-client --config /vpn/client.conf --askpass /vpn/client.pwd --auth-nocache
To test that the VPN is working as intended, you can run the following command to get the public IP address that will be used by containers using the VPN network. This command uses the library/busybox image to fetch the public IP from the ipify service and print it to STDOUT.
docker run --rm --net=container:vpn-client busybox wget -qO- api.ipify.org
Use --net=container:<container-id>
-- routes available by the VPN client will be made available to the container.
docker run -it --rm \
--net=container:vpn-client
ubuntu /bin/bash
version: '2'
services:
my-service:
image: "ubuntu"
network_mode: "service:vpn-client"