Para mim eles são iguais. Tem o host que trata dos IP's das máquinas virtuais e elas podem se comunicar entre si e com o host, mas não podem ver outros dispositivos na Rede Local.
Outra dúvida: o meu host.docker.internal
tem um IP de 192.168.0.100
, mas, quando estou dentro de um container, tem um IP que eu consigo pingar que é 172.17.0.1
, o que é isso e como funciona?
Eles são diferentes em vários aspectos.
O modo ‘NAT’ do VirtualBox implementa roteamento (e ponte entre VMs) inteiramente dentro do VirtualBox – a rede interna é invisível até mesmo para o host, que só vê o VirtualBox.exe como aquele que faz conexões de rede.
O modo 'ponte' do Docker, em vez disso, depende do sistema operacional host para fazer a ponte entre os contêineres e para rotear entre o docker0 e o mundo - a ponte é visível para o host como uma interface de rede virtual e o tráfego pode entrar automaticamente, não apenas sair, sem ter que configure regras de 'encaminhamento de porta' antecipadamente. É muito mais semelhante ao modo 'Host-Only' do VirtualBox (que é somente host apenas no nome).
Por causa de 1), o modo 'NAT' do VirtualBox é estritamente limitado às VMs do VirtualBox, enquanto uma interface "ponte" do Linux também pode ter quase qualquer outra interface do tipo Ethernet como membro. Por exemplo, é possível colocar uma interface 'tap' de uma VM QEMU na mesma ponte - e é até possível colocar interfaces físicas na mesma ponte, dando resultados semelhantes ao modo 'bridged' do VirtualBox.