Linux 从docker ps命令获取端口值

Linux 从docker ps命令获取端口值,linux,docker,unix,ps,Linux,Docker,Unix,Ps,在运行docker ps命令时,我会获取所有正在运行的进程。我已经将MongoDB实例部署到docker容器上。在给出docker ps | grep mongo时,它会显示所有正在运行的mongodb实例。请参考图片以便更好地理解 现在,我必须显示端口详细信息,它有点含糊不清,最终结果应该是2040。 虽然我已经想出了一些确实能给出正确输出的方法,但我希望能找到一种更简短、更有效的方法来获取端口详细信息 这就是我目前获得o/p的方式 docker ps | grep mongo | awk

在运行docker ps命令时,我会获取所有正在运行的进程。我已经将MongoDB实例部署到docker容器上。在给出docker ps | grep mongo时,它会显示所有正在运行的mongodb实例。请参考图片以便更好地理解

现在,我必须显示端口详细信息,它有点含糊不清,最终结果应该是
2040
。 虽然我已经想出了一些确实能给出正确输出的方法,但我希望能找到一种更简短、更有效的方法来获取端口详细信息

这就是我目前获得o/p的方式

docker ps | grep mongo | awk '{print $10}' | awk -F ":" '{print $2}'| cut -d '-' -f 1
这样做,

docker ps|grep mongo|awk '{print $1}'|xargs docker inspect  --format="{{json .NetworkSettings.Ports}}"

它给出了{“27017/tcp”:[{“HostIp”:“0.0.0.0”,“HostPort”:“2040”}}],太复杂了。我使用linux awk cmd获得了所需的输出。希望有一个更简单的方法,但这看起来太复杂了。你试过docker port mongo 27017/tcp吗?这就是你要找的吗?如果你看图片-我希望返回值2040这个输出2040:
docker port mongo 27017/tcp | awk'{split($1,a,“:”);打印a[2]}'