不要将其标记为重复,因为我查看了其他答案,但它并没有解决我的问题.
我使用的是Windows 7和docker工具箱.
我正在做这个教程:
https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/microservices
所以在这个命令之后:
docker run -d -p 80:5000 --name hello-docker weather-microservice
我无法达到http://localhost/
所以要解决它,我决定ping这个盒子.但我不能.
$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
以下不起作用:
$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","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","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,"Aliases": null,"NetworkID": "6226280f22a5aaaa50c60d6f1a19ae8f7243bb79634c4394f62b21a10a868e48","MacAddress": "02:42:ac:11:00:02"
}
}
}
}
]
所以当我这样做时:
$ping 172.17.0.2
Pinging 172.17.0.2 with 32 bytes of data:
Request timed out.
这有效:
$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
我做错了什么或我错过了什么?
最佳答案
这是因为,您通过docker inspect命令看到的IP地址被docker用于内部网络和通信.它无法从外部访问.此外,localhost将无法工作,因为您正在运行在ubuntu VM中运行的docker工具箱.您必须首先获取VM的IP地址,
原文链接:https://www.f2er.com/docker/435848.htmldocker-machine ls
如果我的内存服务正确且工具箱在Mac和Windows中工作相同,则IP地址应为192.168.99.100.因此,您将能够通过http://192.168.99.100访问您的应用程序.除此之外,为什么您仍然使用docker工具箱.新方法是用于windows的mac / docker的docker.这样更容易,更有效率.首先,您将能够通过localhost访问您的应用程序,而无需知道IP地址.