Linux入门教程:Docker run参考(4) – PID设置(–pid), PID命名空间提供
Linux入门教程:Docker run参考(4) – PID设置(–pid), PID命名空间提供
--pid="" : Set the PID (Process) Namespace mode for the container, 'container:<name|id>': joins another container's PID namespace 'host': use the host's PID namespace inside the container默认下,所有的容器都启用了PID命名空间。
PID命名空间提供了进程的分离。PID命名空间删除系统进程视图,允许进程ID可重用,包括pid 1。
在一些情况下需要容器共享主机进程命名空间,基本上允许容器内的进程可以查看主机的所有进程。例如,构建了一个带调试工具如strace或gdb的容器,想在容器使用这些工具来调试主机的进程。
示例:容器内运行htop
创建这个Dockerfile:
FROM alpine:latest RUN apk add --update htop && rm -rf /var/cache/apk/* CMD ["htop"]构建Dockerfile并tag镜像为myhtop:
$ docker build -t myhtop .使用如下命令在容器内运行htop命令:
$ docker run -it --rm --pid=host myhtop这样htop就能看到宿主机上的所有进程。
示例:加入其它容器pid命令空间
启动一个容器运行redis服务器:
$ docker run --name my-redis -d redis通过运行一个带strace的容器来debug这个redis容器:
$ docker run -it --pid=container:my-redis my_strace_docker_image bash $ strace -p 1
评论暂时关闭