gluetun can be great for many other use-cases, but what I said still stands regarding udp p2p like bittorrent. You are very likely to get surprises like GP unless you are very lucky or really know what you are doing wrt the actual networking configuration.
If the VPN container does things correctly and kills the default non-vpn route, how would those surprises occur? To be clear, I hope 3np is talking about containers like the following, and not trying to proxy only udp or only tcp piecemeal.
services:
vpncontainer:
image: <whatever>
container_name: vpncontainer
cap_add: [NET_ADMIN]
vpn-qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: vpn-qbittorrent
network_mode: service:vpncontainer
# and optionally, for other purposes, not qbittorrent above
vpn-socks:
image: serjs/go-socks5-proxy
container_name: vpn-socks
network_mode: service:vpncontainer
# environments, volumes, ports, systctls, port-fwd helpers omitted
I'm saying that the underlying container networking (Docker or whatever backend you use for podman) might not behave like you/the software are expecting with these in context more esoteric protocols.
If you verify that it behaves like you intend (dump network traffic and make sure packets go where they should over some reasonable timespan and across restarts) and ideally are prepared to file issue for any bug you come across (clears throat) definitely don't let me dissuade you from trying, though. It _should_ work.