有没有办法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)
我怎样才能禁用它?
它expose instruction位于构建映像的 docker 文件中。您需要为此创建自己的定制图像。
完成工作:首先找到官方 nginx(库)的dockerfile
然后将 dockerfile 的expose指令编辑为443only.
现在使用官方(定制)dockerfile 构建您自己的镜像修改镜像。
回答您编辑的问题:
Docker 使用 iptables,虽然您可以手动更新防火墙规则以使某个端口的服务不可用,但您将无法解绑 Docker 代理。因此 80 端口仍然会在 docker 主机和 docker 代理上被消耗。