Ik gebruik boot2docker 1.3.1.
Ik heb een Docker-container waarop een webserver draait via uwsgi --http :8080
.
Als ik aan de container koppel, kan ik door de website bladeren met lynx http://127.0.0.1:8080
zodat ik weet dat de server werkt.
Ik heb mijn container uitgevoerd met:
$ docker run -itP --expose 8080 uwsgi_app:0.2
Het heeft de volgende details:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5248ad86596d uwsgi_app:0.2 "bash" 11 minutes ago Up 11 minutes 0.0.0.0:49159->8080/tcp cocky_hypatia
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' 5248ad86596d
172.17.0.107
Ik dacht dat ik vanaf mijn host toegang tot die website kon krijgen door naar http://172.17.0.107:49159
te gaan.
Dit werkt niet. Ik zie alleen ‘verbinden…’ in Chrome, maar ik kom nergens.
Wat doe ik verkeerd?
Antwoord 1, autoriteit 100%
Uitbreiding van Anentropic’santwoord : boot2docker
is de oude app voor Mac en Windows, docker-machine
is de nieuwe.
Vermeld eerst uw machines:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100:2376
Selecteer vervolgens een van de machines (de standaardcomputer heet default
) en:
$ docker-machine ip default
192.168.99.100
Antwoord 2, autoriteit 38%
Ok, stom van me, ik heb het antwoord gevonden in de documenten voor boot2docker
https://docs.docker.com/installation/mac/#container-port-redirection
Ik moest het ip-adres van de boot2docker vm gebruiken in plaats van het ip van de container, d.w.z.
$ boot2docker ip
192.168.59.103
en ik kan door mijn site bladeren vanaf de host op http://192.168.59.103:49159/
Ik hoefde geen route
toe te voegen aan de host
Antwoord 3, autoriteit 15%
Om het IP-adres van uw container te vinden, heeft u GEEN extra installatiesnodig:
docker inspect <container>
Dit levert een schat aan informatie op. grep
het voor het IPAddress
.
Antwoord 4, autoriteit 5%
Je zou de boot2docker-poorttoewijzingsoptie -L kunnen gebruiken, zoals hier.
Dus in jouw geval zou het zijn
boot2docker ssh -L 0.0.0.0:8080:localhost:8080
en dan
docker run -it -p 8080:8080 uwsgi_app:0.2
Op die manier hoeft u het IP-adres van boot2docker niet te gebruiken: u kunt localhost of uw eigen IP-adres gebruiken (en uw docker-container is van buitenaf toegankelijk).
5
had hetzelfde probleem en in mijn geval gebruikte ik AWS EC2-instantie. Ik probeerde met de Container IP die niet werkte. Toen gebruikte ik het eigenlijke publieke IP van de AWS-host als het IP, dat werkte.