赞
踩
如下,我有kyai_rest容器,我进入它查看,有以下进程:
root@ubuntu:/userdata/testKYAI/ky_algo_manager# root@ubuntu:/userdata/testKYAI/ky_algo_manager# docker exec -it kyai_rest /bin/bash root@5940438e0ee6:/build/libevent# root@5940438e0ee6:/build/libevent# root@5940438e0ee6:/build/libevent# root@5940438e0ee6:/build/libevent# ps PID TTY TIME CMD 20 pts/1 00:00:00 bash 28 pts/1 00:00:00 ps root@5940438e0ee6:/build/libevent# root@5940438e0ee6:/build/libevent# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 20:07 pts/0 00:00:00 /bin/bash /usr/local/bin/entrypoint.sh root 7 1 0 20:07 pts/0 00:00:11 ./kyai_rest root 20 0 1 21:20 pts/1 00:00:00 /bin/bash root 29 20 0 21:20 pts/1 00:00:00 ps -ef root@5940438e0ee6:/build/libevent#
然后我切换到宿主机查看:
root@ubuntu:/userdata/testKYAI/ky_algo_manager#
root@ubuntu:/userdata/testKYAI/ky_algo_manager# ps -ef | grep kyai_rest
root 2103 1964 0 20:07 pts/0 00:00:15 ./kyai_rest
root 19018 14638 0 21:57 pts/2 00:00:00 grep --color=auto kyai_rest
root@ubuntu:/userdata/testKYAI/ky_algo_manager#
root@ubuntu:/userdata/testKYAI/ky_algo_manager# ps -ef | grep entrypoint
root 1964 1898 0 20:07 pts/0 00:00:00 /bin/bash /usr/local/bin/entrypoint.sh
root 19025 14638 0 21:57 pts/2 00:00:00 grep --color=auto entrypoint
root@ubuntu:/userdata/testKYAI/ky_algo_manager#
root@ubuntu:/userdata/testKYAI/ky_algo_manager#
发现容器中的进程都能查到,,,
查看这几个进程的父进程:
root@ubuntu:/userdata/testKYAI/ky_algo_manager#
root@ubuntu:/userdata/testKYAI/ky_algo_manager# ps -ef | grep 1964
root 1964 1898 0 20:07 pts/0 00:00:00 /bin/bash /usr/local/bin/entrypoint.sh
root 2103 1964 0 20:07 pts/0 00:00:16 ./kyai_rest
root 19217 14638 0 21:59 pts/2 00:00:00 grep --color=auto 1964
root@ubuntu:/userdata/testKYAI/ky_algo_manager#
root@ubuntu:/userdata/testKYAI/ky_algo_manager#
root@ubuntu:/userdata/testKYAI/ky_algo_manager# ps -ef | grep 1898
root 1898 1 0 20:07 ? 00:00:02 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 5940438e0ee6d98332d7b81e5a3a3b9314a5d14f288ad9a43a8101f175d165a5 -address /run/containerd/containerd.sock
root 1964 1898 0 20:07 pts/0 00:00:00 /bin/bash /usr/local/bin/entrypoint.sh
root 19293 14638 0 21:59 pts/2 00:00:00 grep --color=auto 1898
root@ubuntu:/userdata/testKYAI/ky_algo_manager#
root@ubuntu:/userdata/testKYAI/ky_algo_manager#
父进程是这个:root 1898 1 0 20:07 ? 00:00:02 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 5940438e0ee6d98332d7b81e5a3a3b9314a5d14f288ad9a43a8101f175d165a5 -address /run/containerd/containerd.sock
然后我用kill或者kill -9杀死进程,比如kill -9 7
,杀死kyai_rest进程,发现能杀掉,然后立马又以另一个进程号拉起来了Σ(っ °Д °;)っ
可能是我run容器的时候用了--restart=always
参数。。。
但是这样也太离谱了吧,那我以名字匹配并杀死进程的时候,不是得特别小心,以防容器中有同名进程??
在宿主机上是可以看到并且直接操作容器中的进程的。
当在容器中启动一个进程时,该进程实际上是在宿主机的进程空间中运行的。因此,宿主机上的进程管理工具(如ps命令)可以看到容器内部的进程,并且可以使用宿主机上的工具来操作容器内部的进程,比如杀死进程。
这种行为是因为容器技术使用了Linux的命名空间(namespace)特性,将容器内部的进程隔离到一个独立的命名空间中,但这个命名空间与宿主机共享同一个进程表。因此,宿主机上的进程管理工具可以看到容器内部的进程。
--security-opt seccomp
参数用于配置容器的seccomp(secure computing mode)安全机制。seccomp是Linux内核提供的一种安全机制,可以限制容器中进程对系统调用的访问。通过指定--security-opt seccomp=unconfined
参数,可以禁用容器中的seccomp安全机制,使得容器中的进程可以执行更多的系统调用。
禁用seccomp可能会增加容器的风险,因为容器中的进程可以执行更多的系统调用,包括一些与进程管理相关的系统调用。因此,在使用--security-opt seccomp
参数时,需要谨慎考虑容器中的进程是否可信,并确保容器的安全性。
--privileged
参数用于将容器设置为特权容器。特权容器拥有更高的权限,可以绕过一些安全限制。当容器被设置为特权容器时,它将具有与宿主机相同的权限,包括对宿主机上的进程进行操作。
需要注意的是,设置容器为特权容器会降低容器的安全性,并增加容器被滥用的风险。因此,在使用--privileged
参数时,需要谨慎考虑容器的安全性,并确保只有可信的进程才能运行在特权容器中。
(没看太明白,以后用到再说- -)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。