web-dev-qa-db-ger.com

Warum kann ich den Docker-Container nicht anpingen?

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?

5
Prostak

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.

5
techtabu

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.

3
Ehsan Mirsaeedi

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.

1
Derick Bailey