Если нужно завернуть трафик не через обычный шлюз в штатной докер-сети, а через один из контейнеров, то это с помощью системы подпорок и растяжек таки можно сделать.
1. В конфигурацию контейнеров добавить:
cap_add:
- NET_ADMIN
Это необходимо, так как по умолчанию внутри контейнера нельзя конфигурировать сеть. Ну и redsocks, скорее всего, без этого может не заработать.
2. В скрипте внутри первого контейнера или в entrypoint добавить прописывание роута:
ip route replace default via IP_другого_контейнера
IP второго контейнера лучше зафиксировать. Либо, как вариант, узнавать его через dig (тут контейнер имеет имя router, и нужно через параметр links разрешить к нему доступ):
ip route add default via `dig +short router`
3. В контейнере-роутере надо настроить nat и форвардинг. Примерно так:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 172.18.0.0/24 -j MASQUERADE
Тут можно тоже какими-нибудь командами угадать нужную сетку, чтобы не завязываться на фиксированные IP. Например, так:
network=$(ip route list|grep scope\ link|cut -d ' ' -f 1)
Ну а вообще такие манипуляции - вряд ли хорошая практика. Лучше сразу закладывать в разрабатываемом софте нативную работу через прокси, если это необходимо.