首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker Nginx禁用默认公开端口80

问Docker Nginx禁用默认公开端口80
EN

Stack Overflow用户
提问于 2016-11-01 11:13:07
回答 3查看 6.5K关注 0票数 5

是否有一种方法可以在不创建自己的映像的情况下禁用nginx文件中的默认EXPOSE 80 443指令?

我正在使用Docker Nginx映像,并试图以以下方式公开只使用端口443:

代码语言:javascript
复制
docker run -itd --name=nginx-test --publish=443:443 nginx

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

代码语言:javascript
复制
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

我怎么才能让它失效?

EN

回答 3

Stack Overflow用户

发布于 2016-11-01 11:19:56

expose instruction位于生成图像的停靠文件中。您需要为此创建您自己的自定义图像。

要完成工作:首先找到官方电子图书(图书馆)的官方电子图书(图书馆)

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

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

要回答您编辑过的问题:

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

票数 3
EN

Stack Overflow用户

发布于 2016-11-01 11:26:56

根据nginx docker映像配置,可以在容器开始传递环境var之前设置此设置,如下所示:

代码语言:javascript
复制
docker run -itd -e NGINX_PORT=443 --name=nginx-test nginx

见:

在nginx配置中使用环境变量

然后在你的nginx中你可以设置:

代码语言:javascript
复制
listen ${NGINX_PORT};
票数 0
EN

Stack Overflow用户

发布于 2022-04-13 15:00:08

有一个解决办法来释放端口(但不是公开它)。我试图避免发布端口,但它没有工作,我得到了错误,因为por已经在使用无论如何。直到我发现诀窍是发布公开的端口,但映射到另一个端口。

让我举个例子来解释。

这仍将尝试使用端口80:

代码语言:javascript
复制
docker up -p 443:443

但是这将使用443和其他你选择的随机端口

代码语言:javascript
复制
docker up -p 443:443 -p<some free port>:80

您可以在命令、或ansible剧本中这样做,以便能够在同一台机器上启动多个实例。(例如: nginx,默认情况下公开端口80 )

我这样做是从码头-写作和ansible也。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40358923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档