繁体   English   中英

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

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

问题:

  1. 我怎样才能得到卷发的答案?
  2. 我知道在使用 docker for Mac 时我无法 ping 我的容器( 链接)。
    我可以通过 telnet 来验证端口是否公开吗?
  3. 我可以 SSH 吗?

在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM