docker工人 – 通过HTTP连接到运行容器

我从下面的Docker文件创build了一个docker镜像:

FROM ubuntu:14.04 RUN echo "Europe/London" > /etc/timezone RUN dpkg-reconfigure -f noninteractive tzdata ENV DEBIAN_FRONTEND noninteractive RUN apt-get update RUN apt-get install -y nginx RUN apt-get install -y supervisor RUN apt-get install -y nginx RUN apt-get install -y supervisor RUN apt-get update && apt-get -q -y install lsof RUN apt-get install net-tools RUN apt-get install psmisc RUN apt-get -y install curl RUN rm -Rf /etc/nginx/conf.d/* RUN rm /etc/nginx/sites-enabled/default RUN mkdir /etc/nginx/logs/ RUN touch /etc/nginx/logs/error.log RUN mkdir /usr/share/nginx/logs/ RUN touch /usr/share/nginx/logs/error.log ADD ./conf/nginx.conf /etc/nginx/sites-available/default RUN ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default ADD supervisor.nginx.conf /etc/supervisor.d/nginx.conf copy ./dist /usr/share/nginx/html/ EXPOSE 80 CMD /usr/bin/supervisord -n 

然后,我用下面的方法build立了图

docker build -t dnginx .

然后我创build了一个容器:

 docker run --name d3 -d -p 80:80 dnginx 

我可以看到容器正在运行,并通过运行docker ps -a来显示端口80:

 42ba6aa343bd dnginx "/bin/sh -c '/usr/bin" 2 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp d3 

我可以通过运行docker inspect --format '{{ .NetworkSettings.IPAddress }}' d3来找出IP地址

但是我不能连接到容器,如果尝试从IP地址中打中URL:

curl http://172.17.0.2我得到以下回应

无法连接到127.17.0.2端口80:操作超时

我也无法ping通IP地址

我错过了什么?

命令docker run --name d3 -d -p 80:80 dnginx表示将主机上的端口80映射docker run --name d3 -d -p 80:80 dnginx容器中的端口80。

您可以在docker ps输出中看到映射为0.0.0.0:80->80/tcp

这样,如果你curl 127.0.0.1或在你的主机上curl your-ip-here ,你的请求会被自动路由到nginx容器,它将为stream量提供服务。

没有必要查询容器的私有IP。 您可以使用任何主机的IP地址。

获取docker-machine ip并用来访问你的nginx

docker-machine ls <显示您的docker(s)-machine(s)

查看您想要访问的机器的名称,然后:

docker-machine ip <name> <显示IP地址,如果你的docker机器

尝试使用此IP访问您的nignx