Docker 容器中無ss命令解決方法

2022-06-23 20:21:08 字數 1161 閱讀 4595

在早期運維工作中,檢視伺服器連線數一般都會用netstat命令。其實,有乙個命令比netstat更高效,那就是ss(socket statistics)命令!

ss命令可以用來獲取socket統計資訊,它可以顯示和netstat類似的內容。

ss的優勢在於它能夠顯示更多更詳細的有關tcp和連線狀態的資訊,而且比netstat更快速更高效。原因如下:

1)當伺服器的socket連線數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢。可能你不會有切身的感受,但請相信我,當伺服器維持的連線達到上萬個的時候,使用netstat等於浪費 生命,而用ss才是節省時間。

2)而ss快的秘訣在於它利用到了tcp協議棧中tcp_diag。tcp_diag是乙個用於分析統計的模組,可以獲得linux核心中第一手的資訊,這就確保了ss的快捷高效。當然,如果你的系統中沒有tcp_diag,ss也可以正常執行,只是效率會變得稍慢(但仍然比 netstat要快)。

為了驗證ss比netstat更快更高效,可以如下做幾個實驗看看效果:

幾乎所有的linux系統都會預設包含netstat命令,但並非所有系統都會預設包含ss命令。

netstat命令是net-tools工具集中的一員,這個工具一般linux系統會預設安裝的;ss命令是iproute工具集中的一員;

net-tools是一套標準的unix網路工具,用於配置網路介面、設定路由表資訊、管理arp表、顯示和統計各類網路資訊等等,但是遺憾的是,這個工具自2023年起便不再更新和維護了。

iproute,這是一套可以支援ipv4/ipv6網路的用於管理tcp/udp/ip網路的工具集

如果沒有ss命令,可以如下安裝:

[root@wang ~]# yum install iproute iproute-doc

當伺服器維持30000個socket連線時,使用netstat和ss命令統計連線數的耗時情況如下

[root@wang ~]# netstat -at | wc -l     //耗時15.60秒 

[root@wang ~]# ss -atr | wc -l          //耗時5.40秒(未利用tcp_diag) 

[root@wang ~]# ss -atr | wc -l         //耗時0.47秒(利用tcp_diag)

Docker容器中執行docker 命令

一 在一台執行了docker的伺服器上,啟動374c3bec1f4b 映象的容器,這個映象中安裝docker yum install docker y docker run itd v var run docker.sock var run docker.sock name docker test ...

docker容器命令

1.docker run it name container name repository tag image id bin bash 互動方式啟動docker容器 例如docker run it name mycentos centos 7 bin bash 2.docker run d nam...

docker容器命令

這樣就建立了乙個新的centos容器了。那如果退出呢?通過exit命令就可以退出了 docker run di name 容器名稱 映象名稱 標籤 這個時候我們建立成功了,但是現在還是在本地,還沒有進入到centos容器中,但我們檢視的時候,發現容器已經是在執行了 那我們怎麼進入到這個centos容...