本文由Markdown语法编辑器编辑完成。
1. 背景
前段时间,在linux上启动一个目录下的docker-compose.yml中的服务时,遇到了一个3000端口被占用的问题.
凭借经验,一般可能是之前的服务没被正常的停止掉,导致该服务占用的端口未被释放,导致新的服务无法启动。
但是通过运行以下命令:
docker ps -a |grep 3000
却无任何输出。
说明目前docker的服务,未占用3000端口。
那为什么无法启动相应的服务呢?
2. 解决方案
通过请教公司的IT高手,了解到了问题的原因。
其实,一个服务器,除了docker里面的服务会占用端口(当然这个端口,是在docker-compose.yml中暴露在外面的端口),另外一个本机启动的一些服务,也会占用一些接口。
而docker ps -a, 看到的只是docker服务占用的端口,而看不到本机,非docker启动的服务占用的接口。
了解了问题的原因后,可以修改一下指令:
sudo netstat -nltp |grep 3000
运行该命令后,可以看到本机的哪个服务,占用了3000端口。
如图所示,是5179/grafana-server的服务。说明是本机默认启动了grafana的服务端,占用了3000端口。
依次运行:
sudo systemctl stop grafana-server # 停止grafana服务.
sudo systemctl disable grafana-server # 禁止开机自动启动
这样就解决了本机的服务占用端口,导致docker的,占用相应端口服务无法启动的问题.