为什么在简单的 Docker + nginx 配置上出现 Connection Refused 错误?
why Connection Refused error on simple Docker + nginx configuration?
我有这个 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/
returns这个:
curl: (52) Empty reply from server
为什么会出现这些错误?
使用 Docker 您可以 bind 容器端口到使用 -p
选项的主机端口。
一般规则
docker run -p HOST_PORT:CONTAINER_PORT
绑定容器8080端口到宿主机的80
docker run -p 80:8080 test
Ports which are not bound to the host (i.e., -p 80:80 instead of -p 127.0.0.1:80:80) are accessible from the outside
绑定限制访问localhost的端口
docker run -p 127.0.0.1:80:8080 test
我有这个 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/
returns这个:
curl: (52) Empty reply from server
为什么会出现这些错误?
使用 Docker 您可以 bind 容器端口到使用 -p
选项的主机端口。
一般规则
docker run -p HOST_PORT:CONTAINER_PORT
绑定容器8080端口到宿主机的80
docker run -p 80:8080 test
Ports which are not bound to the host (i.e., -p 80:80 instead of -p 127.0.0.1:80:80) are accessible from the outside
绑定限制访问localhost的端口
docker run -p 127.0.0.1:80:8080 test