使用 Docker beta for mac 的容器的 IP 号是多少?

Syn*_*sso 31 docker

以前我使用 Docker 工具包,可以docker-machine inspect <machine-name>用来查找 docker 机器的 IP,以便查看容器内的容器提供的页面。

我已升级到 docker beta 客户端(适用于 mac),但找不到提供页面的位置。

我假设因为它是 docker pure 而不是 docker-machine 我会在本地主机上看到暴露的端口。但他们不开放。即使通过 kitematic 我导航到暴露的端口 (80) 但什么也没看到。

$ docker inspect tiny_cori | jq '.[].HostConfig.PortBindings'
{
  "80/tcp": [
    {
      "HostIp": "",
      "HostPort": "80"
    }
  ]
}

$ docker inspect tiny_cori | jq '.[].NetworkSettings.IPAddress'
"172.17.0.2"

$ curl 172.17.0.2:80/status
^C

$ docker exec -t -i tiny_cori /bin/bash

root@f1c303f60a15:/# curl localhost:80/status
{"status":"OK"}

root@f1c303f60a15:/# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
    link/sit 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1
    link/tunnel6 :: brd ::
4: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN group default qlen 1
    link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
26: eth0@if27: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link
       valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)

172.17.0.2真的是我容器的IP吗?如果没有,我在哪里可以找到IP是什么?或者我有端口映射问题?

Mik*_*jær 33

您正在查看容器内的 IP 地址,即 172.17.0.2 并且仅存在于 docker 容器“内部”(以及它们之间)。

您要连接的 IP 地址是您的主机 IP 地址。在 Mac 上执行 ifconfig 并找到正确的配置(通常为 192.168.xy 或 10.xyz)。本地主机也应该在容器外部工作。

  • 不知道谁投了反对票,但这实际上是正确的答案。使用 Docker for Mac,不再有具有单独机器 IP 地址的中间 VM。只要端口被正确映射,点击主机(通过 IP 或本地主机)应该将请求转发到容器。 (8认同)
  • 嗯,这是一件有趣的事情 - 在 OS X 上,当我通过 screen 命令转到我的 xHyve VM 并运行 curl http://localhost:8080 时 - 我得到了其中一个容器的响应。但是如果我在 OS X 终端上做同样的事情 - 连接被拒绝。这怎么会发生? (2认同)

小智 11

输入以下命令,您将获得 docker 容器 ip

$docker inspect <docker-container-name>
Run Code Online (Sandbox Code Playgroud)

向下滚动,您将在“ NetworkSettings ”下获得 IP 地址


小智 8

Docker for Mac 在 IP 地址 127.0.0.1 上运行