首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解封80 / nginx / docker端口

解封80 / nginx / docker端口
EN

Stack Overflow用户
提问于 2020-04-14 15:48:19
回答 3查看 4.1K关注 0票数 3

我想让Laravel应用程序在Docker中运行,但在第一个障碍时失败了,我尝试使用docker/getting started Docker镜像,但遇到了下面的阻塞。

代码语言:javascript
复制
$docker run -p 80:80 docker/getting-started

docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:80: bind: address already in use.

下面列出了正在运行的内容:

代码语言:javascript
复制
$sudo lsof -i :80

COMMAND   PID          USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
nginx     143          root    6u  IPv4 0x17106caf335097c7      0t0  TCP localhost:http (LISTEN)
nginx   10145 Jeremyrrsmith    6u  IPv4 0x17106caf335097c7      0t0  TCP localhost:http (LISTEN)
nginx   10218 Jeremyrrsmith    6u  IPv4 0x17106caf335097c7      0t0  TCP localhost:http (LISTEN)
nginx   10296 Jeremyrrsmith    6u  IPv4 0x17106caf335097c7      0t0  TCP localhost:http (LISTEN)
nginx   10372 Jeremyrrsmith    6u  IPv4 0x17106caf335097c7      0t0  TCP localhost:http (LISTEN)

据我所知,我需要杀死在端口80上运行的任何东西,所以我已经杀死了它们( 143个错误除外),但它们使用新的PID重新启动。我真的应该杀了他们吗?

Docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:80: bind: address already in use.错误让我头疼。

netstat -ltnp | grep 80是根据其他线程运行的常见命令,但我得到的响应是netstat: option requires an argument -- p。读过后,第一个是Linux命令(在其他线程中我不清楚)。我用的是Mac电脑。lsof -n -i4TCP:80 | grep LISTEN是mac上的命令(希望它能帮助其他人)。这提供了

代码语言:javascript
复制
nginx   10145 Jeremyrrsmith    6u  IPv4 0x17106caf335097c7      0t0  TCP 127.0.0.1:http (LISTEN)
nginx   10218 Jeremyrrsmith    6u  IPv4 0x17106caf335097c7      0t0  TCP 127.0.0.1:http (LISTEN)
nginx   10296 Jeremyrrsmith    6u  IPv4 0x17106caf335097c7      0t0  TCP 127.0.0.1:http (LISTEN)
nginx   10372 Jeremyrrsmith    6u  IPv4 0x17106caf335097c7      0t0  TCP 127.0.0.1:http (LISTEN)

我删除了这些PID,它们只是用一个新的PID重新启动,我不认为我需要它们,但它们与系统相关吗?我如何永久地杀死他们,他们实际上是在阻止我使用Docker的80端口吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-14 15:57:48

使用端口的最简单、最常见的方法是使用不同的端口映射,例如docker run -p 8080:80 docker/getting-started和通过localhost:8080访问

如果您想使用端口80,您可能必须停止nginx服务,而不是终止进程。

票数 2
EN

Stack Overflow用户

发布于 2020-04-14 16:37:45

我想是拉瓦尔的贴身男爵。我只有$valet stop,我想它已经解决了这个问题。作为lsof docker -i4TCP:80 | grep LISTEN现在不返回任何内容,并且运行-n命令已经设置了一个容器。所以端口80被nginx阻塞了,这个端口是由laravel valet添加的,要使用端口80,您需要停止valet,并在不再需要该端口时重新启动它。我认为。

票数 1
EN

Stack Overflow用户

发布于 2020-04-14 15:56:30

你的设备上运行着nginx,它阻塞了80端口,就像你自己说的那样。

你自己安装nginx了吗?它是作为系统服务安装的吗?当您打开设备电源时,该服务会自动启动。

如果它作为系统服务运行,您可能需要使用适当的系统命令逐步关闭它,而不是尝试杀死进程。我不知道Mac上的命令是什么,但如果你搜索一下它,你会发现的。

在linux上,取决于你的系统,这可能是systemctl stop nginx

你知道nginx进程是从哪里来的吗?

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

https://stackoverflow.com/questions/61202945

复制
相关文章

相似问题

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