Docker nginx 容器:http 代码 400

Docker nginx container: http code 400

我是 docker 的新人,我正在尝试从 https://hub.docker.com/_/nginx/

运行 nginx
  1. 我拉取了镜像

docker pull nginx

  1. 我是运行宁容器

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作为容器命令,就对了。

是否可以看懂?