Markiere es nicht als doppelt, da ich die anderen Antworten angeschaut habe und es mein Problem nicht löst.
Ich verwende Windows 7 und Docker-Toolbox.
Ich mache dieses Tutorial: https://docs.Microsoft.com/en-us/dotnet/csharp/tutorials/microservices
Also nach diesem Befehl:
docker run -d -p 80:5000 --name hello-docker weather-microservice
Ich kann http: // localhost/ nicht erreichen
Um das Problem zu beheben, habe ich mich entschlossen, die Box zu pingen. Aber ich kann nicht.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
78179117b516 weather-microservice "dotnet out/Weathe..." 18 hours ago Up 18 hours 0.0.0.0:80->5000/tcp hello-docker
Folgendes funktioniert nicht:
$ docker-machine ip weather-microservice
Host does not exist: "weather-microservice"
$ docker-machine ip hello-docker
Host does not exist: "hello-docker"
$ docker-machine ip 78179117b516
Host does not exist: "78179117b516"
$ docker inspect 78179117b516
[
{
"Id": "78179117b516332c61e393a36cc10f33e0f0b0d2f418d8483b79f90207e0de3c",
"Created": "2017-06-27T23:37:12.147696044Z",
"Path": "dotnet",
"Args": [
"out/WeatherMicroservice.dll",
"--server.urls",
"http://0.0.0.0:5000"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 22059,
"ExitCode": 0,
"Error": "",
"StartedAt": "2017-06-27T23:37:12.339014063Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:0f6481b4a6fb864ecddb36c48a9facfbe30801d328daf59926e1c6c642f3ae24",
"ResolvConfPath": "/mnt/sda1/var/lib/docker/containers/78179117b516332c61e393a36cc10f33e0f0b0d2f418d8483b79f90207e0de3c/resolv.conf",
"HostnamePath": "/mnt/sda1/var/lib/docker/containers/78179117b516332c61e393a36cc10f33e0f0b0d2f418d8483b79f90207e0de3c/hostname",
"HostsPath": "/mnt/sda1/var/lib/docker/containers/78179117b516332c61e393a36cc10f33e0f0b0d2f418d8483b79f90207e0de3c/hosts",
"LogPath": "/mnt/sda1/var/lib/docker/containers/78179117b516332c61e393a36cc10f33e0f0b0d2f418d8483b79f90207e0de3c/78179117b516332c61e393a36cc10f33e0f0b0d2f418d8483b79f90207e0de3c-json.log",
"Name": "/hello-docker",
"RestartCount": 0,
"Driver": "aufs",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {
"5000/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
]
},
"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": [
25,
80
],
"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": "78179117b516",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"5000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"DOTNET_SDK_VERSION=1.0.0-rc4-004771",
"DOTNET_SDK_DOWNLOAD_URL=https://dotnetcli.blob.core.windows.net/dotnet/Sdk/1.0.0-rc4-004771/dotnet-dev-debian-x64.1.0.0-rc4-004771.tar.gz",
"NUGET_XMLDOC_MODE=skip"
],
"Cmd": null,
"ArgsEscaped": true,
"Image": "weather-microservice",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": [
"dotnet",
"out/WeatherMicroservice.dll",
"--server.urls",
"http://0.0.0.0:5000"
],
"OnBuild": null,
"Labels": {}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "f1b934a02a8ac2e83bf68485d2dfb138b859d1e7b3beb4cb7ba966c9e3f4befa",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"5000/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "80"
}
]
},
"SandboxKey": "/var/run/docker/netns/f1b934a02a8a",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "9c555071437b1919db7c539f0bd3946b7a32f92dcf49c684dbbe01e0592b9af5",
"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": "6226280f22a5aaaa50c60d6f1a19ae8f7243bb79634c4394f62b21a10a868e48",
"EndpointID": "9c555071437b1919db7c539f0bd3946b7a32f92dcf49c684dbbe01e0592b9af5",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02"
}
}
}
}
]
Wenn ich das mache:
$ ping 172.17.0.2
Pinging 172.17.0.2 with 32 bytes of data:
Request timed out.
Das funktioniert:
$ docker exec -it 78179117b516 ping www.google.com
PING www.google.com (172.217.3.196): 56 data bytes
64 bytes from 172.217.3.196: icmp_seq=0 ttl=53 time=5.412 ms
Was mache ich falsch oder was fehle ich?
Dies liegt daran, dass Docker die IP-Adresse, die Sie über den Befehl docker inspect
sehen, für die interne Vernetzung und Kommunikation verwendet. Es ist nicht von außen zugänglich. Außerdem funktioniert localhost nicht, da Sie die Docker-Toolbox ausführen, die in der Ubuntu-VM ausgeführt wird. Sie müssen die IP-Adresse des VM zuerst abrufen, indem Sie
docker-machine ls
Wenn mein Speicher richtig funktioniert und die Toolbox unter Mac und Windows gleich funktioniert, sollte die IP-Adresse 192.168.99.100 lauten. So können Sie Ihre App über http://192.168.99.100 erreichen. Warum verwenden Sie neben alledem immer noch die Docker-Toolbox? Der neue Weg ist Docker für Mac/Docker für Windows. Es ist viel einfacher und effizienter. Zum Start können Sie Ihre App über localhost erreichen, ohne die IP-Adresse zu kennen.
Eigentlich habe ich die IP meines Containers aus Systemsteuerung\Netzwerk und Internet\Netzwerkverbindungen abgerufen. Es gab einen Adapter namens vEthernet (DockerNAT) und es war der Adapter des Containers. Ich konnte die IP anpingen, die ich für diesen Adapter fand.
9 von 10 mal ist es Windows-Firewall.
deaktivieren Sie die Windows-Firewall vollständig - schalten Sie sie aus - und prüfen Sie, ob Sie zu Ihrer Site gelangen können.