tutorial - Conéctese a la docker-machine usando ''localhost''
mysql en docker (2)
Al editar su archivo de hosts
su máquina local solo mira directamente a la dirección IP especificada para un dominio. Por lo tanto, podría agregar la dirección IP de la docker-machine
al etc/hosts
en su máquina local y asignar el puerto 80
en su contenedor al puerto 80
en la docker-machine
.
Ejemplo:
1) Obtener la dirección IP del host de Docker
$ docker-machine ip default
192.168.99.100
2) Agregue esta línea al etc/hosts
en su máquina local
192.168.99.100 domain.com
3) Verifique que su máquina esté resolviendo el dominio.
$ ping domain.com
PING domain.com (192.168.99.100): 56 data bytes
64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.294 ms
64 bytes from 192.168.99.100: icmp_seq=1 ttl=64 time=0.437 ms
64 bytes from 192.168.99.100: icmp_seq=2 ttl=64 time=0.556 ms
64 bytes from 192.168.99.100: icmp_seq=3 ttl=64 time=0.270 ms
Notas:
- Para los usuarios de Windows, el archivo de hosts está localizado en
C:/Windows/System32/Drivers/etc/hosts
- Si desea admitir varios dominios en una sola máquina-docker, puede crear un contenedor proxy con nginx dentro de sus otros contenedores.
Hay ciertas funciones, como JavaScript service workers sin https, que solo funcionan en localhost, pero cuando ejecuto mi aplicación dentro de un contenedor de docker, usando docker-compose, que se ejecuta sobre docker-machine, necesito conectarme a él usando la dirección que recibo de
docker-machine ip default
¿Hay alguna forma de asignar localhost
a esa ip?
Puede agregar un puerto de acceso VirtualBox para mapear un puerto en el host Docker a su máquina local.
Suponiendo que su máquina acopladora se llama "predeterminada" y desea asignar el puerto 80 en su contenedor a localhost: 8888, puede ejecutar:
vboxmanage modifyvm default --natpf1 "nameformapping,tcp,,8888,,80"
o si la máquina virtual se está ejecutando
vboxmanage controlvm default natpf1 "nameformapping,tcp,,8888,,80"
Esto también se puede hacer en la interfaz de usuario de VirtualBox en la configuración de la máquina virtual. Aquí está el documento de VirtualBox https://www.virtualbox.org/manual/ch06.html#network_nat
También necesitará asignar el puerto de su contenedor al puerto de la docker machine, lo hará cuando inicie el contenedor (esto también supone que tiene un comando "EXPOSE 80" en su Dockerfile
docker run -p 80:80 mycontainer
https://docs.docker.com/engine/reference/run/
También vea: https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md