Docker for mac - 无法卷曲我的容器

时间:2017-07-29 14:47:33

标签: macos docker docker-machine

运行docker for Mac 17.06.0我创建了一个docker文件,用于创建Apache服务器的映像。注意它暴露了端口80。

FROM ubuntu:16.04
RUN apt-get update
RUN apt-get install -y apache2
ADD index.html /var/www/html/
CMD /usr/sbin/apache2ctl -D FOREGROUND
EXPOSE 80 

在Dockerfile的同一个文件夹中,我创建了一个简单的index.httml文件 然后我使用

构建并运行它
docker build -t webserver .
docker run -d webserver 

我使用

获取了正在运行的容器的IP地址
docker inspect [container_name] | grep -i IPAddress

当我卷曲

curl 172.17.0.2

我没有回答。

我在运行-p 80:80并在curl命令中使用localhost时得到了答案。

 curl localhost

但我想明白为什么我不能卷曲容器IP。

问题:

  1. 我怎样才能得到卷曲的答案?
  2. 我知道在使用docker for Mac(link)时无法ping我的容器 我可以telnet它只是为了验证端口是否暴露?
  3. 我可以通过SSH进行SSH吗?

2 个答案:

答案 0 :(得分:2)

在Docker for Mac上,Docker引擎在使用Hyper-V的小型VM中运行。因此,ip 172.17.0.2仅在该VM内有效,而不在主机系统上有效。有关更多详细信息以及与Docker Machine等其他VM概念的比较,请参阅https://docs.docker.com/docker-for-mac/docker-toolbox/#the-docker-for-mac-environment

答案 1 :(得分:0)

运行Docker容器时,需要将本地端口绑定到容器,如下所示:

docker run -d -p 80:80 webserver

其中第一个80是localhost上的端口,第二个是暴露的容器上的端口。仅在dockerfile中公开端口不足以从localhost访问它。