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