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