windows - refused - Docker Toolbox-Localhost no funciona
docker localhost refused to connect windows (5)
Docker Toolbox no tiene tantas comodidades como Docker para Windows, pero está en lo correcto al usarlo ya que está en la edición Home.
En Toolbox, nada será
localhost
y será
192.168.99.100
de forma predeterminada, ya que ejecuta una VM Linux en VirtualBox.
Entonces, si ejecuta
docker run -p 80:80 nginx
(tenga en cuenta que tuve que publicar un puerto para
192.168.99.100
para escuchar en ese puerto)
Luego ir a
http://192.168.99.100
debería funcionar.
Así que estoy usando Docker Toolbox porque no tengo Hyper-V en mi máquina, ya que no es Windows 10 pro.
Todo parece funcionar bien, pero cuando intento
0.0.0.0:80
a mi navegador
0.0.0.0:80
siempre me devuelve: No se puede acceder a este sitio
Pero cuando ejecuto el comando:
docker container ps
obtengo lo siguiente:
0.0.0.0:80->80/tcp
lo que significa que esta dirección debería funcionar.
Busqué en problemas de stackoverflow y github.
Ahora estoy atascado.
¿Me estoy perdiendo de algo?
Gracias Mark
EDITAR:
Usar
docker-machine ip default
me devuelve
192.168.99.100
.
Lo ejecuto en el puerto 80. Todavía obtengo el mismo resultado, excepto que la dirección se convierte en la identificación del contenedor:
https://fd677edg12
Ejecuto ese comando en cmd para encontrar mi ipv4:
cmd /k ipconfig /all
.
Ponga el resultado con el puerto y devuelve lo mismo:
https://fd677edg12
Inicialmente tuve algunos problemas con el acceso a mis aplicaciones en localhost: 8080 mientras usaba DockerToolBox y OracleVM VirtualBox.
En VirtualBox:
- Haga clic en la máquina adecuada (probablemente la etiquetada como "predeterminada")
- Configuraciones
- Red> Adaptador 1> Avanzado> Reenvío de puertos
- Haga clic en "+" para agregar una nueva regla
-
Establecer el puerto host
8080
y el puerto invitado8080
; asegúrese de dejar la IP del host y la IP del invitado vacías
Ejecute el comando:
docker run -p 8080:8080 ${image_id}
Para asignar los puertos esperados al
localhost
lugar de golpear directamente la IP de la máquina acoplable, puede usar la CLI de VirtualBox.
Si la máquina virtual docker-machine (aquí llamada
default
) se está ejecutando, agregue y elimine reglas como esta:
> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888" > VBoxManage.exe controlvm "default" natpf1 delete nginx
Si la máquina virtual no se está ejecutando o desea detenerla antes de modificarla:
> docker-machine stop > VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888" > VBoxManage.exe modifyvm "default" --natpf1 delete "nginx" > docker-machine start
Donde el formato de la regla de reenvío de puerto es
[<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>
.
Tenga en cuenta que en VirtualBox, desea asignar al puerto host del mapa Docker, no al puerto contenedor interno. Está asignando host -> VM, luego Docker asigna VM -> contenedor.
Vea los documentos de VirtualBox .
Puede usar
localhost
lugar de ''192.168.99.100'' siguiendo las instrucciones:
Paso # 01:
docker-machine ip default
Verá la IP predeterminada
Paso # 02:
docker-machine stop default
Paso # 03:
-
Abra VirtualBox Manager (desde los programas de inicio en Windows busque
VirtualBox Manager
) - Seleccione su imagen de Docker Machine VirtualBox (por ejemplo: predeterminado)
- Abra Configuración -> Red -> Avanzado -> Reenvío de puertos
-
Agregue el nombre de su aplicación, el puerto de host deseado y su puerto de invitado
ie, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80
Paso # 04: Ahora estás listo para iniciar tu Docker Machine ejecutando lo siguiente:
docker-machine start default
Luego, simplemente inicie su contenedor Docker y podrá acceder a él a través de localhost.
Echa un vistazo aquí para más detalles.
Seguí el tutorial de Docker para Windows en https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell y me quedé atascado en el paso 6 cuando probé nginx en el navegador web . Parece que enfrenté un problema similar ya que también uso Windows Home y no tengo Hyper-V. Mi solución es bastante simple:
- verifique el valor predeterminado de su IP acoplable
$ docker-machine ip default
192.168.99.100
-
Vaya a Oracle Virtual Machine para configurar el reenvío de puertos. Asegúrese de que la configuración de red sea NAT y agregue el reenvío de puertos. IP de host: 127.0.0.1, IP de invitado: 192.168.99.100, puerto configurado a 80 como este
-
Intente nuevamente en su navegador y ejecute http: // localhost o http://127.0.0.1 (también puede agregar el puerto 80). Debería correr.
La cuestión es que la IP nginx está diseñada para ser accesible dentro de la máquina virtual docker, por lo que necesitamos esa configuración de puerto para vadeo para acceder directamente en el navegador de la máquina host