Nginx 移除 docker 容器上的 80/tcp 端口,只保留 8080

Nginx remove exposing port 80/tcp on a docker container, leave only 8080

我通过将 listen 8080; 添加到我仅有的一个服务器块,将 Nginx 设置为侦听 files/etc/nginx/conf.d/default.conf 中的端口 8080

我 运行 Nginx 通过 docker 运行 和 -p 8080:8080

请问为什么如下docker ps命令的PORTS下有80/tcp

STATUS         NAMES               IMAGE                       PORTS
Up 6 minutes   docker-nginx        docker-nginx:1.17.8         80/tcp, 0.0.0.0:8080->8080/tcp

命令docker inspect docker-nginx显示:

 "HostConfig": {
        "PortBindings": {
            "8080/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "8080"
                }
          

"Config": {
        "ExposedPorts": {
            "80/tcp": {},
            "8080/tcp": {}
        },

    "NetworkSettings": {
        (...)
        "Ports": {
            "80/tcp": null,
            "8080/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "8080"
                }
            ]
        },

我的意图是让 Nginx 只监听 8080 并且不能在任何其他端口下访问,即使与 Nginx 属于同一网络的其他容器也是如此。如何让 Nginx 不暴露 80/tcp 端口?

我正在使用来自官方 nginx:1.17.8 图像的构建。

Nginx 镜像的 Dockerfile 应该有端口 80 的 expose 指令。在 Nginx 网站上,您应该能够找到您正在使用的镜像的 dockerfile,并且应该有 expose 80命令。

如果您不想暴露 80 端口,即使您使用的是 8080 端口也不会被使用,请在 Dockerfile 中删除或注释掉 expose 80,然后构建映像。