解封80/nginx/docker端口

gdrx4gfi  于 2022-10-23  发布在  Nginx
关注(0)|答案(4)|浏览(297)

我想让一个Laravel应用程序在Docker中运行,但在第一个障碍时失败了,我试图通过以下命令使用docker/快速入门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重新启动,我不认为我需要它们,但它们与系统相关吗?我如何永远杀死他们,他们实际上是在阻止我将端口80用于Docker吗?

rbl8hiat

rbl8hiat1#

绕过已用端口的最简单、最常见的方法是使用不同的端口Map,例如docker run -p 8080:80 docker/getting-started并通过localhost:8080访问
如果您想使用端口80,您可能必须停止nginx服务,而不是终止该进程。

chy5wohz

chy5wohz2#

我想是拉瓦尔贴身男仆。我刚刚拿到了我认为已经解决的问题。As lsof-n-i4tcp:80|grep Listen现在不返回任何内容,并且运行docker命令已经设置了一个容器。因此端口80被nginx阻塞,该端口是由laravel valet添加的,要使用端口80,您需要停止valet,并在不再需要该端口时重新启动它。我认为。

wn9m85ua

wn9m85ua3#

正如您自己所说,您的设备上正在运行nginx,该设备阻塞了端口80。
Ngix是你自己安装的吗?它是作为一项系统服务安装的,在您打开设备电源时会自动启动吗?
如果它作为系统服务运行,您可能需要使用适当的系统命令逐步关闭它,而不是尝试终止进程。我不知道Mac上的命令是什么,但如果你搜索它,你会发现的。
在Linux上,这可能是systemctl stop nginx,具体取决于您的系统。
你知道nginx进程来自哪里吗?

anhgbhbe

anhgbhbe4#

Docker nginx端口问题:默认情况下,ubuntu安装运行在80端口的apache。这也可能发生在nginx上。因此,请遵循相同的流程。

sudo /etc/init.d/apache2 stop

Docker-Compose.yml文件

nginx:
    build:
      context: .
      dockerfile: ./Dockerfile
    ports:
      - '80:80'
    volumes:
      - static_volume:/home/pos/static/
      - ./docker/nginx/development:/etc/nginx/conf.d

相关问题