无法使用IP地址运行docker

问题描述

我运行了一个Docker映像。容器端口和主机端口都映射到5000,可以使用localhost访问它,但不能使用IP地址访问它。我对网络系统一无所知,并且是Docker的初学者。

我正在使用适用于Windows的Docker应用,并且在docker inspect上,我收到了以下JSON:

[
    {
        "Id": "c38f489d712502ce57e5f6b86d8ad1efd3cf64d3c60ab3239bf34a727d0155b7","Created": "2020-08-19T18:17:50.917578Z","Path": "java","Args": [
            "-jar","/app.jar"
        ],"State": {
            "Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 3142,"ExitCode": 0,"Error": "","StartedAt": "2020-08-19T18:17:53.0308405Z","FinishedAt": "0001-01-01T00:00:00Z"
        },"Image": "sha256:04d86c26964a44e147a0132bc6f6810f5aeba005d655b0d0b86f04499fc6a7a1","ResolvConfPath": "/var/lib/docker/containers/c38f489d712502ce57e5f6b86d8ad1efd3cf64d3c60ab3239bf34a727d0155b7/resolv.conf","HostnamePath": "/var/lib/docker/containers/c38f489d712502ce57e5f6b86d8ad1efd3cf64d3c60ab3239bf34a727d0155b7/hostname","HostsPath": "/var/lib/docker/containers/c38f489d712502ce57e5f6b86d8ad1efd3cf64d3c60ab3239bf34a727d0155b7/hosts","LogPath": "/var/lib/docker/containers/c38f489d712502ce57e5f6b86d8ad1efd3cf64d3c60ab3239bf34a727d0155b7/c38f489d712502ce57e5f6b86d8ad1efd3cf64d3c60ab3239bf34a727d0155b7-json.log","Name": "/blissful_noether","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "","ExecIDs": null,"HostConfig": {
            "Binds": null,"ContainerIDFile": "","LogConfig": {
                "Type": "json-file","Config": {}
            },"NetworkMode": "default","PortBindings": {
                "5000/tcp": [
                    {
                        "HostIp": "","HostPort": "5000"
                    }
                ]
            },"RestartPolicy": {
                "Name": "no","MaximumRetryCount": 0
            },"AutoRemove": false,"VolumeDriver": "","VolumesFrom": null,"CapAdd": null,"CapDrop": null,"Dns": [],"DnsOptions": [],"DnsSearch": [],"ExtraHosts": null,"GroupAdd": null,"IpcMode": "shareable","Cgroup": "","Links": null,"OomscoreAdj": 0,"PidMode": "","Privileged": false,"PublishAllPorts": false,"ReadonlyRootfs": false,"SecurityOpt": null,"UTSMode": "","UsernsMode": "","ShmSize": 67108864,"Runtime": "runc","ConsoleSize": [
                44,168
            ],"Isolation": "","cpuShares": 0,"Memory": 0,"Nanocpus": 0,"CgroupParent": "","BlkioWeight": 0,"BlkioWeightDevice": [],"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": null,"OomKilldisable": false,"PidsLimit": 0,"Ulimits": null,"cpuCount": 0,"cpuPercent": 0,"IOMaximumIOps": 0,"IOMaximumBandwidth": 0,"Maskedpaths": [
                "/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware"
            ],"ReadonlyPaths": [
                "/proc/asound","/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"
            ]
        },"GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/49e30cda4983fa70169660522eb0264adb6a86ba7714f051ceb7fe9ba2e6f921-init/diff:/var/lib/docker/overlay2/52cc6d89b46870d8613801fc85cb6f9fa38c0b37b07857de839acd4d001b5530/diff:/var/lib/docker/overlay2/e058a1965c0dff7fbaf1f2fbbe9dbbd491f273d3389c093a3aff1a2c928e305e/diff:/var/lib/docker/overlay2/ea09144ed7206c329c5dac727f9ddd3f346260a59b9e595916f17ee11c3b6d97/diff:/var/lib/docker/overlay2/53820238bb96c5ce804cc77ecbad212bcd3bf6d6a1ca5fdcc3f4d6f4e2349007/diff","MergedDir": "/var/lib/docker/overlay2/49e30cda4983fa70169660522eb0264adb6a86ba7714f051ceb7fe9ba2e6f921/merged","UpperDir": "/var/lib/docker/overlay2/49e30cda4983fa70169660522eb0264adb6a86ba7714f051ceb7fe9ba2e6f921/diff","workdir": "/var/lib/docker/overlay2/49e30cda4983fa70169660522eb0264adb6a86ba7714f051ceb7fe9ba2e6f921/work"
            },"Name": "overlay2"
        },"Mounts": [
            {
                "Type": "volume","Name": "df1fe5e69c6437bd3e43d737b5cf7b37f9c1c5325b5505964579fd093ed4beae","Source": "/var/lib/docker/volumes/df1fe5e69c6437bd3e43d737b5cf7b37f9c1c5325b5505964579fd093ed4beae/_data","Destination": "/tmp","Driver": "local","Mode": "","RW": true,"Propagation": ""
            }
        ],"Config": {
            "Hostname": "c38f489d7125","Domainname": "","User": "","AttachStdin": false,"AttachStdout": true,"AttachStderr": true,"ExposedPorts": {
                "5000/tcp": {}
            },"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin","LANG=C.UTF-8","JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk","JAVA_VERSION=8u212","JAVA_ALPINE_VERSION=8.212.04-r0"
            ],"Cmd": null,"ArgsEscaped": true,"Image": "04d86c26964a","Volumes": {
                "/tmp": {}
            },"WorkingDir": "","Entrypoint": [
                "java","-jar","/app.jar"
            ],"OnBuild": null,"Labels": {}
        },"NetworkSettings": {
            "Bridge": "","SandBoxID": "fb790b4e2c72fc9b2c9641e1eb91aca5e74759b2ee0265ce5a1907ddb3eb1865","HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"Ports": {
                "5000/tcp": [
                    {
                        "HostIp": "0.0.0.0","SandBoxKey": "/var/run/docker/netns/fb790b4e2c72","SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "0f084ea8ca77ec70d850291644523b81597b761dabe687b4e0035b4ae2e3dd56","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": "51b3be5f2161bb70042d5efd31f5b611cea2bfbdb9841248a142f46fa612352c","DriverOpts": null
                }
            }
        }
    }
]

ipconfig

我什至才知道,即使Docker容器也包含IP。为什么会这样呢?谁能帮助我了解如何通过IP访问容器?

我已经尝试使用上面JSON和ipconfig映像中的所有IP,但是它不起作用。

解决方法

是的,Docker容器具有其唯一的IP地址(在Kubernetes中更多)。

https://stackoverflow.com/a/43694284/9650284

对此进行解释(对解决方案的评论)。 TLDR无法从主机访问Docker容器的内部IP。