docker runコマンドの--pidオプションで使用するPID namespaceを指定できる。
このオプションに与える引数は以下の2パターン
container:CONTINAER_ID
host
container:XXXを指定すれば、他のコンテナとPID namespaceを共有できる。
$ docker container run -d --rm --name app1 -it busybox sh -c 'sleep 1d' 1b0d92a2f8aa2a5b3b858aece1f1ba04b532818118b9f73e841702f26539ed5c $ docker container run -d --rm --name app2 --pid=container:app1 -it busybox sh -c 'sleep 2d' df31e34fa1c6a72c65985c5b05654585410230c4f5b8422a4b96a10c0acc831a $ docker container exec -it app2 /bin/sh / # ps PID USER TIME COMMAND 1 root 0:00 sh -c sleep 1d 7 root 0:00 sh -c sleep 2d 13 root 0:00 /bin/sh 19 root 0:00 ps
hostを指定すればホストとPID namespaceを共有できる。
$ docker container run -d --rm --name app3 --pid=host -it busybox sh -c 'sleep 2d' 04e81362a779c10449e4967511de0115747f3f8cfb40e0a4ccb0b05983af9444 $ docker container exec -it app3 /bin/sh / # ps PID USER TIME COMMAND 1 root 0:00 /init (omitted...) 23907 root 0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 1b0d92a2f8aa2a5b3b858aece1f1ba04b532818118b9f73e841702f26539ed5c -address /run/containerd/containerd.sock 23927 root 0:00 sh -c sleep 1d 24003 root 0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id df31e34fa1c6a72c65985c5b05654585410230c4f5b8422a4b96a10c0acc831a -address /run/containerd/containerd.sock 24020 root 0:00 sh -c sleep 2d 24370 root 0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 04e81362a779c10449e4967511de0115747f3f8cfb40e0a4ccb0b05983af9444 -address /run/containerd/containerd.sock 24389 root 0:00 sh -c sleep 2d 24519 root 0:00 /bin/sh 24576 root 0:00 ps