Докер: vpn очень медленный, когда сравнивается с ВМ - PullRequest
0 голосов
/ 05 марта 2019

Раньше у меня была Sun Virtual Box, и я использовал vpn в этом.Но теперь, прочитав о docker, я захотел попробовать vpn внутри docker

. Я создал образ и запустил свой контейнер с vpn.

Проблема, которую я обнаружил, заключается в том, что скорость docker vpnнамного медленнее, чем VM

Затем я попытался запустить контейнер с --network=host, тогда скорость vpn хорошая.

Но проблема в том, что теперь хост-машина также использует vpn.

Я хочу, чтобы vpn был изолирован для докера и хост не был затронут.

Я обнаружил некоторые изменения, когда я запускаю докер с --network=host и запускаю vpn

Перед запускомконтейнер и впн в нем:

на хосте:

$ ip route
default via 192.168.43.1 dev wlp3s0 proto dhcp metric 600 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.43.0/24 dev wlp3s0 proto kernel scope link src 192.168.43.193 metric 600 

А вот iptables:

$ iptables -L

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         

    Chain FORWARD (policy DROP)
    target     prot opt source               destination         
    DOCKER-USER  all  --  anywhere             anywhere            
    DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere            
    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
    DOCKER     all  --  anywhere             anywhere            
    ACCEPT     all  --  anywhere             anywhere            
    ACCEPT     all  --  anywhere             anywhere            

    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         

    Chain DOCKER (1 references)
    target     prot opt source               destination         

    Chain DOCKER-ISOLATION-STAGE-1 (1 references)
    target     prot opt source               destination         
    DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere            
    RETURN     all  --  anywhere             anywhere            

    Chain DOCKER-ISOLATION-STAGE-2 (1 references)
    target     prot opt source               destination         
    DROP       all  --  anywhere             anywhere            
    RETURN     all  --  anywhere             anywhere            

    Chain DOCKER-USER (1 references)
    target     prot opt source               destination         
    RETURN     all  --  anywhere             anywhere    

Теперь после запуска докера используйте следующую команду:

$ docker run --rm -it --network=host --privileged -v /home/web_dev/radhanath_google_search/mapping:/mapping --name test archlinux/test /usr/bin/bash

на хосте:

#  ip route   
0.0.0.0/1 via 10.110.14.1 dev tun0 
default via 192.168.43.1 dev wlp3s0 proto dhcp metric 600 
10.110.14.0/23 dev tun0 proto kernel scope link src 10.110.14.170 
116.193.159.75 via 192.168.43.1 dev wlp3s0 
128.0.0.0/1 via 10.110.14.1 dev tun0 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.43.0/24 dev wlp3s0 proto kernel scope link src 192.168.43.193 metric 600

и iptables

#  iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  anywhere             anywhere            
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             192.168.0.0/16      
ACCEPT     all  --  anywhere             10.0.0.0/8          
ACCEPT     all  --  anywhere             172.16.0.0/12       
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             www.sublimetext.com 
ACCEPT     all  --  anywhere             116-193-159-75.pacswitch.com 

Chain DOCKER (1 references)
target     prot opt source               destination         

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination         
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-USER (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            

Я новичок в ip route и iptables.Но подумал, что при использовании --network=host изменились маршруты ip и iptables, а сеть хоста и сеть докера одинаковы.Но если не использовать, то скорость vpn очень низкая, но vpn работает изолированно в докере, а хост изолирован без vpn

Моя цель - запустить хост без vpn и docker для запуска в vpn без проблем со скоростью, когдапо сравнению с ВМ

...