Docker nginx 容器:http 代码 400
Docker nginx container: http code 400
我是 docker 的新人,我正在尝试从 https://hub.docker.com/_/nginx/
运行 nginx
- 我拉取了镜像
docker pull nginx
- 我是运行宁容器
docker run --rm --name=some-nginx -p 8080:80 nginx
但是当我在本地计算机的浏览器中打开 localhost:8080 时,总是得到 http 400。从 docker 输出日志:
172.17.0.1 - - [14/Dec/2017:23:07:11 +0000] "\x16\x03\x01\x00\xB5\x01\x00\x00\xB1\x03\x03\x81e|u\x93\xFC`Qo\xC8\xE6y\x18{%\x83\x8C\xC2a\xC93V\xB5;\xC0V\xDC\x10{\xC9)X\x00\x00\x1E\xC0+\xC0/\xCC\xA9\xCC\xA8\xC0,\xC00\xC0" 400 173 "-" "-" "-"
怎么了?我检查了容器内的 nginx (curl localhost
),它可以工作。
谢谢。
我明白了。有点复杂,但我会尽量简化:
您正在将 8080 主机端口绑定到 80 容器端口。因此,如果您在主机上执行 curl localhost
,则意味着您不是在容器内调用 Nginx 服务,而是在您的 *nix 系统中调用端口 80 进程。同样,如果您在容器内发送相同的命令,它将起作用,因为它在容器内公开了默认的 http 端口 (80),但在容器外不公开。您可以通过调用 curl localhost:8080
来确认这个假设。如果把这个return作为容器命令,就对了。
是否可以看懂?
我是 docker 的新人,我正在尝试从 https://hub.docker.com/_/nginx/
运行 nginx- 我拉取了镜像
docker pull nginx
- 我是运行宁容器
docker run --rm --name=some-nginx -p 8080:80 nginx
但是当我在本地计算机的浏览器中打开 localhost:8080 时,总是得到 http 400。从 docker 输出日志:
172.17.0.1 - - [14/Dec/2017:23:07:11 +0000] "\x16\x03\x01\x00\xB5\x01\x00\x00\xB1\x03\x03\x81e|u\x93\xFC`Qo\xC8\xE6y\x18{%\x83\x8C\xC2a\xC93V\xB5;\xC0V\xDC\x10{\xC9)X\x00\x00\x1E\xC0+\xC0/\xCC\xA9\xCC\xA8\xC0,\xC00\xC0" 400 173 "-" "-" "-"
怎么了?我检查了容器内的 nginx (curl localhost
),它可以工作。
谢谢。
我明白了。有点复杂,但我会尽量简化:
您正在将 8080 主机端口绑定到 80 容器端口。因此,如果您在主机上执行 curl localhost
,则意味着您不是在容器内调用 Nginx 服务,而是在您的 *nix 系统中调用端口 80 进程。同样,如果您在容器内发送相同的命令,它将起作用,因为它在容器内公开了默认的 http 端口 (80),但在容器外不公开。您可以通过调用 curl localhost:8080
来确认这个假设。如果把这个return作为容器命令,就对了。
是否可以看懂?