2017-05-27 3 views
0

ich Docker Toolbox bin mit nicht hosten, Setup:Docker Maschine (virtualbox vm) Exportcontainerhafen Maschine

  1. virtualbox Standard vm in Windows 10
  2. Behälter in VirtualBox vm laufen

Das Problem ist, dass ich nicht auf den Web-Service im Container zugreifen kann.

hier einige Befehle, den ich verwenden:

# start up the web service 
docker run -p 8000:8000 -p 9000:9000 -t -i xxx/myweb /bin/bash -l -c '/root/myweb/demos/web/start-servers.sh' 

# terminal print after above cmd 
Starting the HTTP TLS server on port 8000 
and the Secure WebSocket server on port 9000. 

Access the demo through the HTTP server in your browser. 
If you're running on the same computer outside of Docker, use https://localhost:8000 
If you're running on the same computer with Docker, find the IP 
address of the Docker container and use https://<docker-ip>:8000. 
If you're running on a remote computer, find the IP address 
and use https://<remote-ip>:8000. 

WARNING: Chromium will warn on self-signed certificates. Please accept the certificate 
and reload the app. 

WebSocket Server: Logging to '/tmp/openface.websocket.log' 

2017-05-27 15:10:13+0000 [-] Log opened. 
2017-05-27 15:10:13+0000 [-] WebSocketServerFactory (TLS) starting on 9000 
2017-05-27 15:10:13+0000 [-] Starting factory <autobahn.twisted.websocket.WebSocketServerFactory object at 0x7f00ef9f5c90> 

Jetzt mit der folgenden Adresse zuzugreifen ich versuchte, aber alle scheiterten die Web-Seite zu laden:

  1. localhost: 8000
  2. 192.168 .99.100: 8000 (die IP-Adresse der Virtualbox-VM)
  3. 172.17.0.2:8000 (die IP-Adresse des Containers)

Hier sind einige Befehle, den ich verwenden, und ihre Ergebnisse:

$ docker-machine config 
--tlsverify 
--tlscacert="C:\\Users\\AIT\\.docker\\machine\\machines\\default\\ca.pem" 
--tlscert="C:\\Users\\AIT\\.docker\\machine\\machines\\default\\cert.pem" 
--tlskey="C:\\Users\\AIT\\.docker\\machine\\machines\\default\\key.pem" 
-H=tcp://192.168.99.100:2376 

$ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS               NAMES 
5896815b991d  xxx/myweb "/bin/bash -l -c /..." 12 minutes ago  Up 12 minutes  192.168.99.100:8000->8000/tcp, 192.168.99.100:9000->9000/tcp thirsty_wiles 

$ docker inspect thirsty_wiles 
[ 
    { 
     "Id": "5896815b991d394753b5eabdd4fe7967e2e4bd65791ffe7fa1d3e82486c9f050", 
     "Created": "2017-05-27T15:10:12.172475859Z", 
     "Path": "/bin/bash", 
     "Args": [ 
      "-l", 
      "-c", 
      "/root/myweb/demos/web/start-servers.sh" 
     ], 
     "State": { 
      "Status": "running", 
      "Running": true, 
      "Paused": false,    "Pid": 2753, 
      "ExitCode": 0, 
      "Error": "", 
      "StartedAt": "2017-05-27T15:10:12.294120929Z", 
      "FinishedAt": "0001-01-01T00:00:00Z" 
     }, 
     "Image": "sha256:3c9f00308ef150eef9d50576245df69234437a4360684f9b262a284f50dc15d7", 
     "ResolvConfPath": "/mnt/sda1/var/lib/docker/containers/5896815b991d394753b5eabdd4fe7967e2e4bd65791ffe7fa1d3e82486c9f050/resolv.conf", 
     "HostnamePath": "/mnt/sda1/var/lib/docker/containers/5896815b991d394753b5eabdd4fe7967e2e4bd65791ffe7fa1d3e82486c9f050/hostname", 
     "HostsPath": "/mnt/sda1/var/lib/docker/containers/5896815b991d394753b5eabdd4fe7967e2e4bd65791ffe7fa1d3e82486c9f050/hosts", 
     "LogPath": "/mnt/sda1/var/lib/docker/containers/5896815b991d394753b5eabdd4fe7967e2e4bd65791ffe7fa1d3e82486c9f050/5896815b991d394753b5eabdd4fe7967e2e4bd65791ffe7fa1d3e82486c9f050-json.log", 
     "Name": "/thirsty_wiles", 
     "RestartCount": 0, 
     "Driver": "aufs", 
     "MountLabel": "", 
     "ProcessLabel": "", 
     "AppArmorProfile": "", 
     "ExecIDs": null, 
     "HostConfig": { 
      "Binds": null, 
      "ContainerIDFile": "", 
      "LogConfig": { 
       "Type": "json-file", 
       "Config": {} 
      }, 
      "NetworkMode": "default", 
      "PortBindings": { 
       "8000/tcp": [ 
        { 
         "HostIp": "192.168.99.100", 
         "HostPort": "8000" 
        } 
       ], 
       "9000/tcp": [ 
        { 
         "HostIp": "192.168.99.100", 
         "HostPort": "9000" 
        } 
       ] 
      }, 
      "RestartPolicy": { 
       "Name": "no", 
       "MaximumRetryCount": 0 
      }, 
      "AutoRemove": false, 
      "VolumeDriver": "", 
      "VolumesFrom": null, 
      "CapAdd": null, 
      "CapDrop": null, 
      "Dns": [], 
      "DnsOptions": [], 
      "DnsSearch": [], 
      "ExtraHosts": null, 
      "GroupAdd": null, 
      "IpcMode": "", 
      "Cgroup": "", 
      "Links": null, 
      "OomScoreAdj": 0, 
      "PidMode": "", 
      "Privileged": false, 
      "PublishAllPorts": false, 
      "ReadonlyRootfs": false, 
      "SecurityOpt": null, 
      "UTSMode": "", 
      "UsernsMode": "", 
      "ShmSize": 67108864, 
      "Runtime": "runc", 
      "ConsoleSize": [ 
       30, 
       120 
      ], 
      "Isolation": "", 
      "CpuShares": 0, 
      "Memory": 0, 
      "NanoCpus": 0, 
      "CgroupParent": "", 
      "BlkioWeight": 0, 
      "BlkioWeightDevice": null, 
      "BlkioDeviceReadBps": null, 
      "BlkioDeviceWriteBps": null, 
      "BlkioDeviceReadIOps": null, 
      "BlkioDeviceWriteIOps": null, 
      "CpuPeriod": 0, 
      "CpuQuota": 0, 
      "CpuRealtimePeriod": 0, 
      "CpuRealtimeRuntime": 0, 
      "CpusetCpus": "", 
      "CpusetMems": "", 
      "Devices": [], 
      "DeviceCgroupRules": null, 
      "DiskQuota": 0, 
      "KernelMemory": 0, 
      "MemoryReservation": 0, 
      "MemorySwap": 0, 
      "MemorySwappiness": -1, 
      "OomKillDisable": false, 
      "PidsLimit": 0, 
      "Ulimits": null, 
      "CpuCount": 0, 
      "CpuPercent": 0, 
      "IOMaximumIOps": 0, 
      "IOMaximumBandwidth": 0 
     }, 
     "GraphDriver": { 
      "Data": null, 
      "Name": "aufs" 
     }, 
     "Mounts": [], 
     "Config": { 
      "Hostname": "5896815b991d", 
      "Domainname": "", 
      "User": "", 
      "AttachStdin": true, 
      "AttachStdout": true, 
      "AttachStderr": true, 
      "ExposedPorts": { 
       "8000/tcp": {}, 
       "9000/tcp": {} 
      }, 
      "Tty": true, 
      "OpenStdin": true, 
      "StdinOnce": true, 
      "Env": [ 
       "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 
      ], 
      "Cmd": [ 
       "/bin/bash", 
       "-l", 
       "-c", 
       "/root/myweb/demos/web/start-servers.sh" 
      ], 
      "Image": "xxx/myweb", 
      "Volumes": null, 
      "WorkingDir": "", 
      "Entrypoint": null, 
      "OnBuild": null, 
      "Labels": {} 
     }, 
     "NetworkSettings": { 
      "Bridge": "", 
      "SandboxID": "97f5c2894d9a6977723e3a54db77f7ff81150d8447722147a0d561a193d4caeb", 
      "HairpinMode": false, 
      "LinkLocalIPv6Address": "", 
      "LinkLocalIPv6PrefixLen": 0, 
      "Ports": { 
       "8000/tcp": [ 
        { 
         "HostIp": "192.168.99.100", 
         "HostPort": "8000" 
        } 
       ], 
       "9000/tcp": [ 
        { 
         "HostIp": "192.168.99.100", 
         "HostPort": "9000" 
        } 
       ] 
      }, 
      "SandboxKey": "/var/run/docker/netns/97f5c2894d9a", 
      "SecondaryIPAddresses": null, 
      "SecondaryIPv6Addresses": null, 
      "EndpointID": "2f62e7e113d8ec9f0c6760f618f53f43821c469b3c461b7447011737ee768c65", 
      "Restarting": false, 
      "OOMKilled": false, 
      "Dead": false, 

      "Gateway": "172.17.0.1", 
      "GlobalIPv6Address": "", 
      "GlobalIPv6PrefixLen": 0, 
      "IPAddress": "172.17.0.2", 
      "IPPrefixLen": 16, 
      "IPv6Gateway": "", 
      "MacAddress": "02:42:ac:11:00:02", 
      "Networks": { 
       "bridge": { 
        "IPAMConfig": null, 
        "Links": null, 
        "Aliases": null, 
        "NetworkID": "188e40f0cb38ff9be5f053cffdf5e97c22bfed8f7ee93c685178d0c9748a032c", 
        "EndpointID": "2f62e7e113d8ec9f0c6760f618f53f43821c469b3c461b7447011737ee768c65", 
        "Gateway": "172.17.0.1", 
        "IPAddress": "172.17.0.2", 
        "IPPrefixLen": 16, 
        "IPv6Gateway": "", 
        "GlobalIPv6Address": "", 
        "GlobalIPv6PrefixLen": 0, 
        "MacAddress": "02:42:ac:11:00:02" 
       } 
      } 
     } 
    } 
] 

Docker Toolbox auch eine Standardkonfiguration für "default" vm-Netzwerk Einstellung hat:

1: NAT

2: Host- Nur Adapter (Virtualbox Host-Only Ethernet Adapter # 2).

Ich bin neu in Docker Toolbox, Was soll ich tun, um auf die Webseite im Container zuzugreifen? Könnten Sie mir bitte helfen, mein Problem zu diagnostizieren?

+0

Welche Fehler bekommen Sie? Überprüfen Sie, ob eine Firewall den Port blockiert. Versuchen Sie auch, über die IP der VM auf irgendetwas zuzugreifen. Etwas, das außerhalb eines Containers ausgeführt wird, z. B. Python SimpleHTTPServer. – vempo

+0

@vempo, wenn ich IP: Port für den Zugriff auf die Webseite verwenden, fand ich keine Antwort. und auch keine Verbindung wird im Container-Befehlsendgerät ausgedruckt. Wie sollte ich die Firewall überprüfen? (whos Firewall). Mit VM's IP meinst du 192.168.99.100 oben? Ich verwende SimpleHTTPServer hier. Können Sie mir bitte helfen, das Problem zu diagnostizieren? – user2262504

+0

Wenn Sie also SimpleHTTPServer in der VM außerhalb eines Containers ausführen, können Sie dann vom Hostcomputer darauf zugreifen? Zum Beispiel http://192.168.99.100:8080 (der Port, den Sie konfiguriert haben). Sie müssen zuerst herausfinden, wo das Problem liegt - Host/VM oder VM/Container. – vempo

Antwort

0

Wenn VM (Docker Host) Linux ausgeführt wird, versuchen iptables -F & iptables -t nat -F und versuchen Sie es erneut von Host-Only oder Bridge-Modus-Netzwerk von Windows für Ex, nur wenn Host IP 192.168.56.101 für VM ist eine Schnittstelle, versuchen Sie, dass IP : 8080 von Windows Physical Host.

+0

Ich überprüfe, dass die Docker-Toolbox boot2docker-Images in der VM ausführt. Standardmäßig hat die docker-Toolbox eine VM mit dem Namen "default" erstellt, und das Netzwerk ist so konfiguriert, dass es sowohl Adapter 1: NAT als auch Adapter 2: Host-only Adapter (Host-Only Ethernet Adapter # 2 von Virtualbox) enthält. Könnten Sie bitte helfen, das Problem zu diagnostizieren, ich habe keine Ahnung, wohin ich als nächstes gehen soll. – user2262504

+0

Überprüfen Sie zuerst, ob das Host Only # 2 Gateway von der VM erreichbar ist. –

0

Ich gehe davon aus, dass Sie über den Zugriff auf den Web-Service von dem Host-Computer aus fragen, auf dem Virtualbox läuft.

Wie Sie bereits wissen, können Sie vom boot2docker Linux-Rechner aus über localhost: or: auf den Webservice zugreifen.

Um von Ihrem Hostcomputer aus auf den Webdienst zuzugreifen, können Sie die von Virtualbox bereitgestellte Portweiterleitungsfunktion verwenden. Sie können unter Einstellungen-> Netzwerk-> Port-Weiterleitung unter dem NAT-Adapter der boot2docker-Maschine gehen und eine Port-Weiterleitung zwischen boot2docker-Host-Port und Windows-Computer-Port hinzufügen. Für Ihr Beispiel können Sie sagen (hostip = 127.0.0.1, Host-Port = 8000, Gast-Port = 8000). Danach können Sie auf den Webserver mit localhost: 8000 oder 127.0.0.1.8000 von Ihrem Hostcomputer zugreifen.

Hoffe, das hilft.

Grüße Sreenivas

+0

Hallo! Es wäre besser, wenn Sie [Wie erstelle ich ein minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) für zukünftige Bemühungen beim Stack-Überlauf auschecken. -Vielen Dank – Momin

Verwandte Themen