我有这个Dockerfile
:
FROM nginx:latest
COPY devops/nginx_proxy.conf /etc/nginx/conf.d/default.conf
EXPOSE 8080
和devops/nginx_proxy.conf
:
server {
listen 8080;
client_max_body_size 32M;
underscores_in_headers on;
}
使用docker run -p 8080:80 test
运行Dockerfile,然后使用curl http://localhost/
进行测试,我看到以下错误:
curl: (7) Failed to connect to localhost port 80: Connection refused
更奇怪的是,curl http://localhost:8080/
返回的是:
curl: (52) Empty reply from server
为什么我会出现这些错误?
使用Docker,您可以使用-p
选项将容器端口绑定到主机端口。
总则
docker run -p HOST_PORT:CONTAINER_PORT
将容器8080端口绑定到主机的80
docker run -p 80:8080 test
未绑定到主机的端口(即-p 80:80而不是-p 127.0.0.1:80:80(可以从外部访问
绑定限制访问localhost的端口
docker run -p 127.0.0.1:80:8080 test