解决:ERROR: for nginx  Cannot start service nginx: Ports are not available: listen tcp 0.0.0.0:80

一、问题场景

在 Mac 上的 docker 配置项目下执行以下命令:

docker-compose up

提示以下错误:

ERROR: for nginx  Cannot start service nginx: Ports are not available: 
listen tcp 0.0.0.0:80: bind: address already in use

二、问题原因

通过以上错误提示发现 80 端口已经被占用,看一下被谁占用了:

bash-3.2# lsof -i :80

COMMAND  PID       USER   FD   TYPE         DEVICE SIZE/OFF NODE NAME
httpd    117       root    4u  IPv6 0x56      0t0  TCP *:http (LISTEN)
httpd    371       _www    4u  IPv6 0x56      0t0  TCP *:http (LISTEN)
httpd   2452       _www    4u  IPv6 0x56      0t0  TCP *:http (LISTEN)
httpd   2455       _www    4u  IPv6 0x56      0t0  TCP *:http (LISTEN)
httpd   2456       _www    4u  IPv6 0x56      0t0  TCP *:http (LISTEN)
httpd   5443       _www    4u  IPv6 0x56      0t0  TCP *:http (LISTEN)

发现是 Apache 占用了 80 端口。

我的系统是:MacOS Catalina 10.15.4(不确定是不是升级新系统的原因),开机后会自动启动 Apacha,这个会自动占用 80 端口,如果想启动 Nginx 监听 80 端口,必须停掉 Apacha。

三、解决方案

使用以下命令可以停掉 Apacha:

sudo apachectl stop

停掉之后再执行以下命令就没什么问题了:

docker-compose up

搞定!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章