2016-09-01 1 views
2

Ich benutze "Docker für Mac" und führe einen Container auf meinem Host-Rechner aus. Ich kann auf den Container über localhost auf Hostcomputer zugreifen. Aber es ist nicht von anderen Systemen auf LAN verfügbar.Zugriff auf Docker-Container von einem anderen Rechner aus über LAN

Der Container ist der nginx-Webserver, auf den über localhost zugegriffen werden kann: 80, aber nicht von anderen Systemen aus auf demselben LAN-Netzwerk erreichbar.

Ich möchte, dass andere Systeme auf den Container auf dem Hostcomputer zugreifen können.

Edit 1: Hinzufügen von Docker-compose Konfiguration und "Docker Info" Befehlsausgabe

version: '2' 

services: 
    nginx: 
    image: artifactory.service.dev:5000/nginx:latest 
    network_mode: host 
    ports: 
     - "80:80" 
     - "10001-10020:10001-10020" 
     - "8080:8080" 
    volumes: 
     - ~/docker/.docker/nginx/html:/usr/share/nginx/html 

    redis: 
    image: artifactory.service.dev:5000/redis:latest 
    restart: always 
    ports: 
     - "6379:6379" 

    activemq: 
    image: artifactory.service.dev:5000/rmohr/activemq:5.11.1 
    restart: always 
    ports: 
     - "61613:61613" 
     - "61616:61616" 
     - "8161:8161" 

    oracle: 
    image: artifactory.service.dev:5000/oracle-12c:latest 
    restart: always 
    ports: 
     - "1521:1521" 
    volumes: 
     - ~/docker/.docker/oracle:/tmp/oracle:ro 
    privileged: true 

Docker info

Containers: 4 
Running: 3 
Paused: 0 
Stopped: 1 
Images: 38 
Server Version: 1.12.1 
Storage Driver: aufs 
Root Dir: /var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 310 
Dirperm1 Supported: true 
Logging Driver: json-file 
Cgroup Driver: cgroupfs 
Plugins: 
Volume: local 
Network: host bridge null overlay 
Swarm: inactive 
Runtimes: runc 
Default Runtime: runc 
Security Options: seccomp 
Kernel Version: 4.4.19-moby 
Operating System: Alpine Linux v3.4 
OSType: linux 
Architecture: x86_64 
CPUs: 6 
Total Memory: 11.71 GiB 
Name: moby 
ID: LBLG:7UQC:W67Q:J744:QAHE:4JLX:QRVB:2QQD:PTB2:MV75:HD6Y:FROD 
Docker Root Dir: /var/lib/docker 
Debug Mode (client): false 
Debug Mode (server): true 
File Descriptors: 50 
Goroutines: 72 
System Time: 2016-09-01T06:51:40.063477725Z 
EventsListeners: 1 
No Proxy: *.local, 169.254/16, *.dev 
Registry: https://index.docker.io/v1/ 
Experimental: true 
Insecure Registries: 
artifactory.service.dev:5000 
127.0.0.0/8 

Befehl verwendet, um den Behälter zu starten:

Docker-komponieren up -d nginx

Dank

Antwort

2

Sie haben keine Liste, was befehlen Sie verwenden. Das funktioniert für mich. Ich kann darauf zugreifen, indem ich die IP-Adresse meines Mac von meinem iPhone (das gleiche Wi-Fi-Netzwerk) verwende.

docker run -d --name myserver -p 80:80 nginx:1.10-alpine 

Bearbeiten: Beispiel komponieren Datei.

Erstellen Sie ein Brückennetzwerk (Backbone), das für Ihre Dienste intern ist. Sie alle kommunizieren über dieses Netzwerk. Der einzige externe Zugriffspunkt ist über Ihren Nginx-Proxy (Ports: Abschnitt).

Verwenden Sie keine IP-Adresse irgendwo (zB in nginx.conf). Verwenden Sie nur Servicenamen. Verwenden Sie beispielsweise oracle:1521, um eine Verbindung zu Oracle herzustellen.

Finden Sie woanders, um Ihre HTML-Dateien zu speichern. ~/docker/.docker sollte nur von docker verwendet werden.

version: "2" 

services: 
    nginx: 
    image: artifactory.service.dev:5000/nginx:latest 
    ports: 
    - "80:80" 
    - "10001-10020:10001-10020" 
    - "8080:8080" 
    volumes: 
    - ~/docker/.docker/nginx/html:/usr/share/nginx/html 
    networks: 
    - backbone 

    redis: 
    image: artifactory.service.dev:5000/redis:latest 
    restart: always 
    expose: 
    - "6379" 
    networks: 
    - backbone 

    activemq: 
    image: artifactory.service.dev:5000/rmohr/activemq:5.11.1 
    restart: always 
    expose: 
    - "61613" 
    - "61616" 
    - "8161" 
    networks: 
    - backbone 

    oracle: 
    image: artifactory.service.dev:5000/oracle-12c:latest 
    restart: always 
    expose: 
    - "1521" 
    volumes: 
    - ~/docker/.docker/oracle:/tmp/oracle:ro 
    privileged: true 
    networks: 
    - backbone 

networks: 

    backbone: 
    driver: bridge 
+0

Danke für die Antwort. Ich habe die Frage mit docker-compose-Konfiguration aktualisiert, die ich benutze, um den Container zu starten –

+0

Das ist, weil es auf dem Standard-Bridge-Netzwerk ausgeführt wird. Füge 'network_mode: host' zu deiner Nginx-Service-Definition hinzu (ich nehme an, du verwendest' version: "2" 'komponiere Datei, wenn nicht zuerst zu Version 2 konvertiert). https://docs.docker.com/compose/overview/ – Alkaline

+0

Ich habe meine docker-compose-Konfiguration aktualisiert, wobei 'network_mode: host' immer noch das gleiche Problem hat. Die Localhost-URL funktioniert, aber nicht von Systemen in demselben LAN-Netzwerk. Ich benutze Version 2 von Docker komponieren. Schätze deine Hilfe. –

Verwandte Themen