服务器上的docker 容器太多,端口分配太乱,如何简单查看占用的容器端口情况
用如下脚本 查看服务器 docker 端口 占用
需要提前安装jq命令
if type -P yum >/dev/null 2>&1;then
yum install jq -y
else
apt install jq -y
fi
查看docker端口使用 的脚本如下
vi /usr/local/shell/check_port_usage.sh
#!/bin/bash
temp_file=$(mktemp /tmp/tmp.XXXX)
docker_item=$(docker ps -q)
check_docker_item_port() {
for i in `docker inspect $item|jq .[0].NetworkSettings.Ports|egrep 'tcp|udp'|awk -F ':' '{print $1}'`;do docker inspect $item|jq .[0].NetworkSettings.Ports[$i]|grep HostPort|uniq|awk -v port=`echo $i|sed 's/"//g' |awk -F '/' '{print $2}'` '{print $NF,port}'|sed 's/"//g';done
}
echo "docker占用的端口列表"
exec 3>&1
exec 1> $temp_file
for item in $docker_item;do check_docker_item_port;done
exec 1>&3
cat $temp_file|sort
echo "nginx 占用的端口列表"
netstat -lpnt|grep nginx|awk '{print $4}'|awk -F ':' '{print $2}'|sort
建议把该脚本放到 /etc/profile 中,并把输出重定向到 开启欢迎页面中 /etc/motd 中
例如笔者的
echo "/usr/local/shell/check_port_usage.sh >> /etc/motd" >> /etc/profile