Docker容器IP地址

shi*_*hin 5 docker

我在 Mac OSX 上使用 Docker。

运行容器后,我检查 IP 地址。

docker inspect container-name | grep IP
"LinkLocalIPv6Address": "",
    "LinkLocalIPv6PrefixLen": 0,
    "SecondaryIPAddresses": null,
    "SecondaryIPv6Addresses": null,
    "GlobalIPv6Address": "",
    "GlobalIPv6PrefixLen": 0,
    "IPAddress": "172.17.0.5",
    "IPPrefixLen": 16,
    "IPv6Gateway": "",
            "IPAddress": "172.17.0.5",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0, 
Run Code Online (Sandbox Code Playgroud)

现在当我去172.17.0.5时,没有任何反应。

然后用另一种方式检查IP地址。

docker-machine ip default
192.168.99.102
Run Code Online (Sandbox Code Playgroud)

192.168.99.102 作品。

现在我的问题是为什么它输出不同的 IP 地址而第一个不起作用。

mat*_*its 5

Docker 守护进程是 linux 特定的软件,因此要在 OS X 上运行,它必须在 linux 虚拟机中运行。使用 docker machine 会为您解决这个问题。IP 地址172.17.0.5是 linux 虚拟机内 docker 桥上该容器的地址,因此无法从 OS X 主机访问。

该命令docker-machine ip default返回虚拟机本身的 IP 地址,该地址可从 OS X 主机访问。

如果您通过 SSH 连接到 docker-machine 虚拟机,那么您将能够172.17.0.5从该 SSH 连接内进行访问。有关如何执行此操作,请参阅此答案:How to ssh into docker-machine VirtualBox instance?