我在files/etc/nginx/conf.d/default.conf中设置了一个Nginx来侦听端口8080,方法是将listen 8080;添加到我仅有的一个服务器块中。
我用docker运行Nginx,用-p 8080:8080运行
我想问一下为什么docker ps命令的端口下会有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镜像的构建。
发布于 2021-01-22 19:57:50
Nginx镜像的Dockerfile应该包含端口80的expose指令。在Nginx网站上,你应该能够找到你正在使用的镜像的dockerfile,并且应该有expose 80命令。
如果您不想暴露端口80,即使您使用的是端口8080也不会使用它,那么删除或注释掉Dockerfile文件中的expose 80,然后构建镜像。
https://stackoverflow.com/questions/65838174
复制相似问题