docker为Mac – 不能curl我的容器
运行Docker for Mac 17.06.0我已经创build了一个docker文件来创buildApache服务器的镜像。 注意它暴露了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的同一个文件夹中,我创build了一个简单的index.httm文件。
然后我build立并运行它使用
docker build -t webserver . docker run -d webserver
我使用正在运行的容器的IP地址
docker inspect [container_name] | grep -i IPAddress
当我curl
curl 172.17.0.2
我没有得到答案。
当运行-p 80:80并在curl命令中使用localhost时,我确实得到了答案。
curl localhost
但我想明白为什么我不能curl容器IP。
问题:
- 我怎样才能得到我curl的答案?
- 我明白,当使用docker for Mac( 链接 )时,我无法ping通我的容器。
我可以telnet它只是为了validation端口是暴露的? - 我可以SSH吗?
在Docker for Mac上,Docker引擎在使用Hyper-V的小型VM中运行。 因此,ip 172.17.0.2
仅在该虚拟机内有效,而不在主机系统上有效。 请参阅https://docs.docker.com/docker-for-mac/docker-toolbox/#the-docker-for-mac-environment了解更多细节,并与Docker Machine等其他虚拟机概念进行比较。
当你运行你的Docker容器时,你需要像这样绑定一个本地端口到容器:
docker run -d -p 80:80 webserver
其中第一个80
是本地主机上的端口,第二个是容器上暴露的端口。 只要在dockerfile
暴露端口是不足以从本地主机访问它。