无法连接到OSX上的Docker容器

Cla*_*diu 10 macos docker

我是Docker的新手,我似乎无法连接到任何容器.

我安装了Docker Toolbox.现在我正试图让Shipyard工作.我按照Docker Quickstart Terminal中的步骤进行操作.说明说:

部署后,脚本将输出URL以及凭据信息进行连接.

Shipyard安装程序以:

Shipyard available at http://10.0.2.15:8080
Username: [elided] Password: [elided]
Run Code Online (Sandbox Code Playgroud)

但是,我去了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",
Run Code Online (Sandbox Code Playgroud)

我不确定为什么IP不同,但我试图连接到http://172.17.0.8:8080,这也不起作用.http://localhost:8080也失败了.

这也发生在我试图运行docker-gunicorn-nginx时 - 一切都已启动,但我无法连接到机器.

是什么赋予了?

Cla*_*diu 17

如果你通过Mac OS X上的 Docker 安装阅读,你会发现在OSX上,Docker容器不能在主机上运行:

在Linux上的Docker安装中,您的物理机器既是localhost又是Docker主机.在网络中,localhost表示您的计算机.Docker主机是容器运行的计算机.

在典型的Linux安装中,Docker客户端,Docker守护程序和任何容器都直接在您的localhost上运行.这意味着您可以使用标准的localhost寻址(如localhost:8000或0.0.0.0:8376)来寻址Docker容器上的端口.

[...]

在OS X安装中,docker守护程序在名为default的Linux VM中运行.默认情况下是一个轻量级Linux VM,专门用于在Mac OS X上运行Docker守护程序.虚拟机完全从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
Run Code Online (Sandbox Code Playgroud)

而且,开放http://192.168.99.100:8080带我到造船厂.成功!

  • 它仍然有效吗?在文档中找不到上述文本。 (2认同)

小智 7

您可以尝试执行此命令:

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

它会返回一些东西:

192.168.99.100
Run Code Online (Sandbox Code Playgroud)

要获取端口号:

docker ps
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

要验证它是否正常工作:

curl 192.168.99.100:8080