Host Namespace
コンテナは Linux Namespaces によって様々なリソースを分離している. Namespace にはいろんな種類があるが,Dockerでは,Namespace の一部をホストと共有する事ができる.
--net=host
--net=host
オプションを用いて,Network Namespace をホストと同様のものを使ってコンテナを作成することができる.
コンテナ内からホストのNICやルーティングテーブルを見ることができる.
docker container run --rm -it guni1192/debug-tools ip addr
docker container run --rm --net=host -it guni1192/debug-tools ip addr
--uts=host
--uts=host
オプションを用いて,UTS Namespace をホストと同様のものを使ってコンテナを作成することができる.
コンテナ内からホストのhostnameを参照したり,変更できる.
docker container run --rm -it guni1192/debug-tools hostname
docker container run --rm --uts=host -it guni1192/debug-tools hostname
--pid=host
--pid=host
オプションを用いて,PID Namespace をホストと同様のものを使ってコンテナを作成することができる.
コンテナ内からホストと同じ /proc
の情報を見ることができる.
docker container run --rm -it guni1192/debug-tools ps auxf
docker container run --rm --pid=host -it guni1192/debug-tools ps auxf
Note: これらのオプションはコンテナ内からホストのリソースを利用できてしまうため, セキュリティホールになりやすい.そのため,できるだけ利用しないほうが良い.