[英]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.