【问题标题】:Nginx remove exposing port 80/tcp on a docker container, leave only 8080Nginx 移除 docker 容器上暴露的 80/tcp 端口,只留下 8080
【发布时间】:2021-04-26 12:11:35
【问题描述】:

我设置了一个 Nginx 来监听 files/etc/nginx/conf.d/default.conf 中的端口 8080,方法是将 listen 8080; 添加到我仅有的一个服务器块中。

我通过 docker run 使用 -p 8080:8080 运行 Nginx

请问为什么下面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 图像的构建。

【问题讨论】:

    标签: docker nginx port


    【解决方案1】:

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

    如果您不希望端口 80 暴露,即使您使用端口 8080 时不会使用它,请删除或注释掉 Dockerfile 中的 expose 80,然后构建映像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 2021-08-05
      • 2019-06-09
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      相关资源
      最近更新 更多