「車輪の再実装」って言葉が好き(実践はできてない)

起動済みのdockerコンテナのネットワーク名前空間に入る方法

まず、あらかじめ入りたいコンテナのIDか名前を取得しておき、以下の様な手順で入れる。

pid=$(docker inspect <コンテナのIDか名前> --format '{{.State.Pid}}')
sudo mkdir -p /var/run/netns
sudo mount --bind /proc/${pid}/ns/net /var/run/netns/<名前(任意)>
sudo ip netns exec <名前>  bash

基本的にホストのソフトをそのまま使えるので、ipやping等をそのまま使えて便利。

ただし、自分でunmountし無い限り、docker上でコンテナを消しても名前空間が残り続けるので注意。

ちなみに、残っている場合は、

sudo ip netns list

とすると、自分で指定した名前が見えるはず。