我想让Laravel应用程序在Docker中运行,但在第一个障碍时失败了,我尝试使用docker/getting started Docker镜像,但遇到了下面的阻塞。
$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.下面列出了正在运行的内容:
$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上的命令(希望它能帮助其他人)。这提供了
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端口吗?
发布于 2020-04-14 15:57:48
使用端口的最简单、最常见的方法是使用不同的端口映射,例如docker run -p 8080:80 docker/getting-started和通过localhost:8080访问
如果您想使用端口80,您可能必须停止nginx服务,而不是终止进程。
发布于 2020-04-14 16:37:45
我想是拉瓦尔的贴身男爵。我只有$valet stop,我想它已经解决了这个问题。作为lsof docker -i4TCP:80 | grep LISTEN现在不返回任何内容,并且运行-n命令已经设置了一个容器。所以端口80被nginx阻塞了,这个端口是由laravel valet添加的,要使用端口80,您需要停止valet,并在不再需要该端口时重新启动它。我认为。
发布于 2020-04-14 15:56:30
你的设备上运行着nginx,它阻塞了80端口,就像你自己说的那样。
你自己安装nginx了吗?它是作为系统服务安装的吗?当您打开设备电源时,该服务会自动启动。
如果它作为系统服务运行,您可能需要使用适当的系统命令逐步关闭它,而不是尝试杀死进程。我不知道Mac上的命令是什么,但如果你搜索一下它,你会发现的。
在linux上,取决于你的系统,这可能是systemctl stop nginx。
你知道nginx进程是从哪里来的吗?
https://stackoverflow.com/questions/61202945
复制相似问题