2016-07-08 9 views
0

Wenn ich echo $DOCKER_HOST mache, bekomme ich leere Daten.Wie IP für Container in Host Ubuntu Machine Docker zu bestimmen?

Ich habe 3 Container fing an zu laufen, mit folgenden Datei zusammensetzen:

db: 
    image: mongo:latest 
    volumes: 
    - air_scout-mongodb:/data/db 
app: 
    build: . 
    env_file: .env 
    environment: 
    RAILS_ENV: $RAILS_ENV 
    links: 
    - db 
    expose: 
    - "3000" 
web: 
    build: . 
    dockerfile: config/containers/Dockerfile-nginx 
    links: 
    - app 
    ports: 
    - "80:80" 

Und unten ist der Inhalt der Datei/etc/hosts für alle drei Behälter einschließlich Host-ubuntu-Datei:

host /etc/hosts content 
    127.0.0.1 localhost 
    127.0.1.1 bajratech-codemilan-pc 
    192.168.99.100 air_scout.docker 
    # The following lines are desirable for IPv6 capable hosts 
    ::1  ip6-localhost ip6-loopback 
    fe00::0 ip6-localnet 
    ff00::0 ip6-mcastprefix 
    ff02::1 ip6-allnodes 
    ff02::2 ip6-allrouters 
web container nginx /etc/hosts contents. // container id = 04f4b2a137db 
    127.0.0.1 localhost 
    ::1 localhost ip6-localhost ip6-loopback 
    fe00::0 ip6-localnet 
    ff00::0 ip6-mcastprefix 
    ff02::1 ip6-allnodes 
    ff02::2 ip6-allrouters 
    172.17.0.3 airscout_app_1 50a8bbe3d0f9 
    172.17.0.3 app 50a8bbe3d0f9 airscout_app_1 
    172.17.0.3 app_1 50a8bbe3d0f9 airscout_app_1 
    172.17.0.4 04f4b2a137db 
app container unicorn /etc/hosts contents. // container id = 50a8bbe3d0f9 
    127.0.0.1 localhost 
    ::1 localhost ip6-localhost ip6-loopback 
    fe00::0 ip6-localnet 
    ff00::0 ip6-mcastprefix 
    ff02::1 ip6-allnodes 
    ff02::2 ip6-allrouters 
    172.17.0.2 airscout_db_1 4743428b65c4 
    172.17.0.2 db 4743428b65c4 airscout_db_1 
    172.17.0.2 db_1 4743428b65c4 airscout_db_1 
    172.17.0.3 50a8bbe3d0f9 
db container mongodb /etc/hosts contents. // container id = 4743428b65c4 
    127.0.0.1 localhost 
    ::1 localhost ip6-localhost ip6-loopback 
    fe00::0 ip6-localnet 
    ff00::0 ip6-mcastprefix 
    ff02::1 ip6-allnodes 
    ff02::2 ip6-allrouters 
    172.17.0.2 4743428b65c4 

I Ich kann nicht auf den Web-Container (nginx) in meinem Hostcomputer zugreifen. Wie kann ich ihn finden?

+1

'docker ps'? Es zeigt IP und Port an. Wenn Sie auf Ihrem Host Ihr Container starten, wird die IP die IP Ihres Rechners sein (damit localhost funktioniert). Was Sie stattdessen suchen, ist der Port, der 'docker ps' wird – dwursteisen

+0

Dank für schnelle Antwort @dwursteisen anzeigen, aber ich habe Adresse als" 0.0.0.0:80-> 80/tcp, 443/tcp ", wenn ich docker mache ps. – codemilan

+0

bedeutet dies, dass Ihr Container den Port 80 und den Port 443 freigibt. Und dass der Port 80 Ihres Containers über den Port 80 Ihres lokalen Computers erreichbar ist. So können Sie versuchen, 'telnet localhost 80' zu verbinden mit Ihrem nginx – dwursteisen

Antwort

1

Bitte überprüfen Sie Ihre port Konfigurationen und vergewissern Sie sich, dass sie richtig gebunden sind. Ein anderer guter Platz ist, sich die Protokolle anzuschauen, nachdem Sie docker-compose up ausgeführt haben.

Stellen Sie außerdem sicher, dass Ihre .env Datei alle erforderlichen Umgebungsvariablen enthält, hauptsächlich SECRET_KEY_BASE für Schienen App.

+0

danke für die Informationen zur Verfügung gestellt @ przbadu, das Problem war wirklich nicht richtig setzen die $ RAILS_ENV und $ SECRET_KEY_BASE Umgebungsvariablen und ich habe sie behoben und die App ist jetzt live. Nochmals vielen Dank. – codemilan

+0

Froh, dass es dir geholfen hat:) .... Prost – przbadu

1

Um zu wissen, auf welcher IP/Port-Containers ausgeführt wird, können Sie den Befehl docker ps

docker ps wird angezeigt verwenden, welche Container ausgeführt werden, und welcher Port jeden Container Verwendung und Export. (Siehe Port-Säule)

$ docker ps 
CONTAINER ID  IMAGE      COMMAND    CREATED    STATUS    PORTS    NAMES 
4c01db0b339c  nginx     bash     17 seconds ago  Up 16 seconds  0.0.0.0:80->80/tcp, 443/tcp  nginx1 

In diesem Beispiel den Port 80 des Behälters mit dem Port zugeordnet ist 80 Ihrer Maschine. Dies bedeutet, dass Sie über den Anschluss 80 Ihres Geräts auf den Anschluss 80 zugreifen können, z. B. mit einem Telnet-Befehl:

+0

schön. Danke, Mann. – codemilan