在Docker中使用PID隔離可以讓不同容器的進(jìn)程ID不會(huì)相互干擾,確保容器的隔離性。在容器啟動(dòng)時(shí),Docker引擎會(huì)創(chuàng)建新的命名空間,并且在該命名空間中運(yùn)行容器中的第一個(gè)進(jìn)程(通常是init)。
$ docker run --pid=host ubuntu:latest ps
當(dāng)我們指定PID隔離時(shí),Docker會(huì)在新的命名空間中運(yùn)行容器進(jìn)程。默認(rèn)情況下,這個(gè)PID命名空間是隔離的,也就是說(shuō),容器中的進(jìn)程只能看到容器內(nèi)部的進(jìn)程。
比如,在容器內(nèi)部運(yùn)行ps命令,只會(huì)看到容器內(nèi)部的進(jìn)程:
$ docker run --pid=container:ubuntu:latest ps
但是,在容器外運(yùn)行ps命令,只能看到容器內(nèi)部init進(jìn)程的PID:
$ ps -ef | grep
這個(gè)特性可以幫助我們限制容器內(nèi)部進(jìn)程的運(yùn)行環(huán)境,讓容器更加安全。