[英]Docker for mac - can't curl my container
为 Mac 17.06.0 运行 docker 我创建了一个 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.html 文件。
然后我构建并运行它使用
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。
问题:
在 Docker for Mac 上,Docker 引擎在一个使用 Hyper-V 的小型虚拟机中运行。 因此,ip 172.17.0.2
仅在该 VM 内有效,而在您的主机系统上无效。 请参阅https://docs.docker.com/docker-for-mac/docker-toolbox/#the-docker-for-mac-environment了解更多详细信息以及与 Docker Machine 等其他 VM 概念的比较。
运行 Docker 容器时,需要将本地端口绑定到容器,如下所示:
docker run -d -p 80:80 webserver
其中第一个80
是本地主机上的端口,第二个是暴露的容器上的端口。 仅在dockerfile
公开端口不足以从本地主机访问它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.