docker使用namespace實現網絡,計算等資源的隔離,當需要排查網絡問題時,使用p netns
命令卻無法在主機上看到任何network namespace,這是因為默認docker把創建的網絡命名空間鏈接文件隱藏起來了,導致ip netns
命令無法讀取,給分析網絡原理和排查問題帶來了麻煩。
下面是恢復netns命名空間的辦法。
恢復容器的netns
執行下面的命令來獲取容器進程號docker inspect 容器|grep Pid
獲取容器的進程號
執行如下命令,將進程網絡命名空間恢復到主機目錄,ln -s /proc/容器進程號/ns/net /var/run/netns/容器
如果/var/run/netns目錄不存在,以root用戶手動創建目錄即可。
然后執行ip netns
命令即可看到容器的網絡命名空間。可執行網絡相關命令來排查網絡情況。