无法连接OSX上的Docker容器。

17

我对Docker还不熟悉,似乎无法连接到任何容器。

我安装了Docker Toolbox。现在我想让Shipyard正常工作。我按照Docker Quickstart Terminal中的步骤进行操作。说明书上写道:

部署完成后,脚本将输出连接URL以及凭据信息。

Shipyard安装程序以此结束:

Shipyard available at http://10.0.2.15:8080
Username: [elided] Password: [elided]

然而,我在浏览器上输入了 http://10.0.2.15:8080 却无法连接。

在另一个 Docker Quickstart 终端中,我运行了 docker ps 命令查看容器信息以获取其IP地址,并得到以下输出:

$ docker inspect a4755 | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.8",
                    "IPAddress": "172.17.0.8",

我不确定为什么IP地址不同,但我尝试连接http://172.17.0.8:8080,这也没有成功。http://localhost:8080也失败了。

当我尝试运行docker-gunicorn-nginx时,也出现了同样的问题——所有服务都已启动,但我无法连接到该机器。

这是怎么回事?

2个回答

24
如果你阅读 Docker 在 Mac OS X 上的安装,你会发现在 OSX 上,Docker 容器不运行在主机上:
在 Linux 上的 Docker 安装中,你的物理机既是本地主机又是 Docker 主机。在网络中,本地主机意味着你的计算机。Docker 主机是容器运行所在的计算机。
在典型的 Linux 安装中,Docker 客户端、Docker 守护程序和任何容器都直接运行在你的本地主机上。这意味着你可以使用标准的本地主机寻址(如 localhost:8000 或 0.0.0.0:8376)来访问 Docker 容器上的端口。
在 OS X 安装中,Docker 守护程序运行在名为 default 的 Linux VM 中。default 是一个轻量级的 Linux VM,专门用于在 Mac OS X 上运行 Docker 守护程序。VM 完全从 RAM 运行,是一个小巧的 ~24MB 下载,并且启动大约需要 5 秒钟。
在 OS X 中,Docker 主机地址是 Linux VM 的地址。当你使用 docker-machine 启动 VM 时,它被分配一个 IP 地址。当你启动一个容器时,容器上的端口映射到 VM 上的端口。要看到这个实践,请按照此页面上的练习进行操作。

确实,打开新的Docker Quickstart终端后,我看到:

docker is configured to use the default machine with IP 192.168.99.100

打开http://192.168.99.100:8080,会进入Shipyard界面。成功!


2
这还有效吗?在文档中找不到上述文本。 - Amit Tripathi
@Claudiu Docker for Mac是如何配置的,以便我的Web浏览器知道连接到虚拟机? - devinov
这根本没有任何意义。Docker Quickstart 终端不是一个东西,我已经愉快地使用 localhost 一年多了……直到今天它停止工作,我不知道为什么。 - geoidesic

11

你可以尝试并执行此命令:

docker-machine ip default

它将返回类似以下的内容:

192.168.99.100

获取端口号:

docker ps

示例输出(向右滚动以查看端口映射):

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
113346425f20        springio/spring1    "sh -c 'java $JAVA_OP"   34 minutes ago      Up 34 minutes       0.0.0.0:8080->8080/tcp   pensive_kirch

为了验证是否工作,请执行以下操作:

curl 192.168.99.100:8080


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接