Docker Nginx 禁用默认暴露的端口 80

Tom*_*omG 5 nginx docker

有没有办法EXPOSE 80 443在不创建自己的镜像的情况下禁用 nginx docker 文件中的默认指令?

我正在使用Docker Nginx图像并尝试通过以下方式仅公开端口 443:

docker run -itd --name=nginx-test --publish=443:443 nginx
Run Code Online (Sandbox Code Playgroud)

但我可以看到使用docker ps -a容器也暴露了端口 80:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                     NAMES
ddc0bca08acc        nginx               "nginx -g 'daemon off"   17 seconds ago      Up 16 seconds       80/tcp, 0.0.0.0:443->443/tcp              nginx-test
Run Code Online (Sandbox Code Playgroud)

我怎样才能禁用它?

Far*_*ahi 3

expose instruction位于构建映像的 docker 文件中。您需要为此创建自己的定制图像。

完成工作:首先找到官方 nginx(库)dockerfile

然后将 dockerfile 的expose指令编辑为443only.

现在使用官方(定制)dockerfile 构建您自己的镜像修改镜像。

回答您编辑的问题:

Docker 使用 iptables,虽然您可以手动更新防火墙规则以使某个端口的服务不可用,但您将无法解绑 Docker 代理。因此 80 端口仍然会在 docker 主机和 docker 代理上被消耗。