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
,然后构建映像。
我通过将 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
,然后构建映像。