nginxのコンテナに入ってみる
続いて、出てきたnamespaceのIDとlsnsの結果をひもづけていきましょう。userのnamespaceは分離されておらず、networkとuts、ipcなどの通信関連も、pauseというプロセスのnamespaceのものを使っていることが分かります。
# lsns | grep 4026531835
4026531835 cgroup 209 1 root /sbin/init
# lsns | grep 4026532474
4026532474 ipc 3 14509 65535 /pause
# lsns | grep 4026532476
4026532476 mnt 2 14611 root nginx: master process nginx -g daemon off;
# lsns | grep 4026532402
4026532402 net 3 14509 65535 /pause
# lsns | grep 4026532477
4026532477 pid 2 14611 root nginx: master process nginx -g daemon off;
# lsns | grep 4026531837
4026531837 user 209 1 root /sbin/init
# lsns | grep 4026532473
4026532473 uts 3 14509 65535 /pause
ps auxfでプロセスを確認してみます。containerdからcontainerd-shimが立ち上がり、そこからpauseとnginxのプロセスが起動していることが分かります。pauseは、複数のコンテナを同じPodにまとめて、同じOS上で動いているように見せるために存在しているコンテナです。
root 2413 2.1 2.3 2215532 94044 ? Ssl Nov25 152:52 /usr/bin/containerd
root 14484 0.0 0.2 709076 10304 ? Sl 01:32 0:00 _ containerd-shim -namespace k8s.io
-workdir /var/lib/containerd/io.containerd.runtime.v1.linux/k8s.io/652192845922a51436085d74c89c7d21f64feb62568432681f845633a174eb31
-address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd
65535 14509 0.0 0.0 964 4 ? Ss 01:32 0:00 | _ /pause
root 14590 0.0 0.1 708820 7356 ? Sl 01:32 0:00 _ containerd-shim -namespace k8s.io
-workdir /var/lib/containerd/io.containerd.runtime.v1.linux/k8s.io/f66dd3c1e442f0da10aaf0d6954fcafa4d3533da5f3bb597ca7003c66bbb437d
-address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd
root 14611 0.0 0.1 32628 5188 ? Ss 01:32 0:00 _ nginx: master process nginx -g daemon off;
101 14656 0.0 0.0 33076 2344 ? S 01:32 0:00 _ nginx: worker process
nginxのコンテナに入ってみましょう。nginxのコンテナには最低限のものしか含まれていないので、psコマンドを使うこともできません。
# nsenter --target 14611 --all bash
# ps
-sh: 2: ps: not found
# cat /etc/debian_version
9.8
今度はnsenterでホスト側のnamespaceに入り、そこからnginxコンテナのrootfsの中をのぞいてみます。mountの結果を事前に確認したnginxコンテナのIDでgrepすると、overlay on ~が表示されます。
ここがnginxコンテナのrootfsです。cdで移動して、cat ./etc/debian_versionを叩いてみると、さきほどと同じ9.8が表示されました。
# nsenter --target 1 --all bash
# mount | grep f66dd3c1e442f0da10aaf0d6954fcafa4d3533da5f3bb597ca7003c66bbb437d
overlay on /run/containerd/io.containerd.runtime.v1.linux/k8s.io/f66dd3c1e442f0da10aaf0d6954fcafa4d3533da5f3bb597ca7003c66bbb437d/rootfs type overlay (rw,relatime,lowerdir=/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/522/fs:/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/521/fs:/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/518/fs,upperdir=/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/552/fs,workdir=/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/552/work,xino=off)
# cd /run/containerd/io.containerd.runtime.v1.linux/k8s.io/f66dd3c1e442f0da10aaf0d6954fcafa4d3533da5f3bb597ca7003c66bbb437d/rootfs
# cat ./etc/debian_version
9.8