Situação:
Então, instalei o Jupyter-Lab dentro de um contêiner do Docker em uma VM na minha rede. Eu fiz um commit (eu sei que essa não é a maneira correta de fazer as coisas, eu deveria usar um arquivo Docker) . Em seguida, vou para o bash do contêiner e executo jupyter-lab
isso e, em seguida, envio para STDOut as urls para conectar-se à WebGUI:
http://localhost:8888/
or http://127.0.0.1:8888/
Abaixo está um diagrama da minha configuração:
┌─────────────────────────────┐
│ │
│ VM Container │
│ IP: 192.168.10.223 │ ┌────────────────────┐
│ Docker IP: 172.17.0.1 │ │ │
│ │ My Local 192.168.10.0/24 Network │ My Machine │
│ ┌─────────────────────┐ │xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx│ │
│ │ Docker │ │ │ IP: 192.168.10.50 │
│ │ Jupyter-Lab │ │ │ │
│ │ │ │ └────────────────────┘
│ └─────────────────────┘ │
│ │
└─────────────────────────────┘
Problema:
não consigo me conectar ao Jupyter WebGui. Já tentei os seguintes comandos:
sudo docker run -it --rm -p 8888:8888 -v $(realpath ~/notebooks):/tf/notebooks
sudo docker run -it --rm -p 8888:8888 --expose 8888 -v $(realpath ~/notebooks):/tf/notebooks
sudo docker run -it --rm -p 127.0.0.1:8888:8888 -v $(realpath ~/notebooks):/tf/notebooks
sudo docker run -it --rm -p 8888:8888 --ip 0.0.0.0 -v $(realpath ~/notebooks):/tf/notebooks
E não consigo me conectar da minha máquina 192.168.10.50 à instância do Jupyter. Eu executei o netstat -tulnp
que mostra claramente que a porta 8888 está exposta:
docker_machine@instance:~$ netstat -tulpn
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:45511 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
udp 0 0 127.0.0.53:53 0.0.0.0:* -
Isso mostra que está ouvindo qualquer endereço para conectar, então não entendo.
Pergunta
Por que não consigo obter a interface da web do Jupyter quando aponto meu navegador para 192.168.10.223:8888?
A saída do seu
jupyter-lab
sugere que o jupyter está ouvindo apenas na interface de loopback dentro do contêiner. Para habilitar o acesso de fora do container, você precisa vinculá-lo à interface externa do container (ou todas as interfaces).