最近在服务器部署一个发送数据的程序,结果不是很顺利。这里简单记一些遇到的坑。

测试两台机器之间的网络带宽,建议使用iperf命令。

监听方:

iperf -s -p 8000

发送方:

iperf -c {target_ip} -p 8000

如果iperf出现connect failed: No route to host,很可能是防火墙把端口禁用了,(CentOS)可以参考centos 7 - open firewall port开启端口。


要监测每个进程的收、发数据的速度,可以使用nethogs命令。


想在Linux中安装某个命令行工具(比如上面提到的iperf),却发现没有root权限(比如是在一个受限的Docker容器中),应该怎么办(apt-getyum都需要root权限)?

一个思路是下载所需工具的源代码,再进行编译安装,比如:

git clone https://github.com/esnet/iperf
cd iPerf
./configure
make
make install

另一个思路是直接复制编译好的可执行文件过去。


使用docker的-v选项挂载一个文件夹到容器中,却发现容器中对应的文件夹内容是空的,而docker run命令也并没有报错。是什么问题,该如何解决?

问题出在权限上,解决方法是把挂载文件夹的模式设为zZ(参考Permission denied on accessing host directory in docker),比如:

docker run -v /var/db:/var/db:Z rhel7 /bin/sh