Como acessar um contêiner de docker em execução no MacOSX de outro host?
Estou tentando começar o docker e quero executar oUbiquiti video controller. Instalei o Docker Toolbox e consegui executar o contêiner no meu host Yosemite e posso acessá-lo no mesmo mac acessando o IP retornado pordocker-machine ip default
. Mas eu quero acessá-lo em outras máquinas na rede e, eventualmente, configurar o encaminhamento de porta no meu roteador doméstico, para que eu possa acessá-lo fora da minha rede doméstica.
Como sugerido emedição 160 do boot2docker, usando a GUI do Virtualbox, consegui adicionar um adaptador de rede em ponte, mas depois de reiniciar a VMdocker-machine
não pode mais se conectar à VM.docker env default
trava por um longo tempo, mas eventualmente retorna algumas variáveis de ambiente junto com a mensagemMaximum number of retries (60) exceeded
. Quando eu configuro o shell com essas variáveis e tento executardocker ps
Eu recebo o erro:An error occurred trying to connect: Get https://10.0.2.15:2376/v1.20/containers/json: dial tcp 10.0.2.15:2376: network is unreachable
.
Suspeito que a docker-machine tenha algumas suposições sobre a configuração de rede na VM e estou estragando tudo.
docker-machine ssh ifconfig -a
retorna o seguinte:
docker0 Link encap:Ethernet HWaddr 02:42:86:44:17:1E
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
dummy0 Link encap:Ethernet HWaddr 96:9F:AA:B8:BB:46
BROADCAST NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth0 Link encap:Ethernet HWaddr 08:00:27:37:2C:75
inet addr:192.168.1.142 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe37:2c75/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2996 errors:0 dropped:0 overruns:0 frame:0
TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:278781 (272.2 KiB) TX bytes:6824 (6.6 KiB)
Interrupt:17 Base address:0xd060
eth1 Link encap:Ethernet HWaddr 08:00:27:E8:38:7C
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fee8:387c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:767 errors:0 dropped:0 overruns:0 frame:0
TX packets:495 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:122291 (119.4 KiB) TX bytes:116118 (113.3 KiB)
eth2 Link encap:Ethernet HWaddr 08:00:27:A4:CF:12
inet addr:192.168.99.100 Bcast:192.168.99.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fea4:cf12/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:430 errors:0 dropped:0 overruns:0 frame:0
TX packets:322 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:53351 (52.1 KiB) TX bytes:24000 (23.4 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth0
parece estar recebendo um endereço DHCP razoável do meu roteador.
Não tenho certeza se essa é a abordagem correta ou se estou latindo na árvore errada. Se eu conseguir que o adaptador de rede em ponte funcione na VM, não sei como convencer meu contêiner de docker a usá-lo. Eu tentei pesquisar alto e baixo na internet. Encontrei dezenas de sites que explicam como você precisa acessar o contêiner usando o valor dedocker-machine ip default
ao invés delocalhost
mas nada para explicar como acessar de um host diferente. Talvez eu precise melhorar minhas habilidades no Google.