我已经从以下Docker文件创建了一个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
然后我用以下内容构建了图像:
docker build -t dnginx .
然后我创建了一个容器:
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地址点击网址,我无法连接到容器:
curl http://172.17.0.2
我收到以下回复
无法连接到127.17.0.2端口80:操作超时
我无法ping通ip地址
我错过了什么?
答案 0 :(得分:2)
获取docker-machine ip并使用访问你的nginx
docker-machine ls
<显示你的(s)docker(s)-machine(s)
查看您要访问的计算机的名称,并:
docker-machine ip <name>
&lt;如果您的docker-machine
尝试使用此IP
访问您的nignx答案 1 :(得分:2)
命令docker run --name d3 -d -p 80:80 dnginx
表示您将主机上的端口80映射到docker容器中的端口80.
您可以在docker ps
输出中看到0.0.0.0:80->80/tcp
这样,如果您的主机上有curl 127.0.0.1
或curl your-ip-here
,您的请求会自动路由到将为流量提供服务的nginx容器。
无需查找容器的私有IP。您可以使用任何主机的IP地址。