Docker 虽然提供了轻量级的进程隔离,但并不能完全隔离所有系统资源。以下是 Docker 无法完全隔离或存在限制的主要资源类型:
--privileged 权限),可能影响宿主机和其他容器。/proc/cpuinfo),可能泄露宿主机信息。--device 或特权模式可绕过隔离。CLOCK_REALTIME):容器默认共享宿主机的系统时间,修改容器时间会直接影响宿主机(需 --cap-add SYS_TIME 权限)。ntpd 或 chrony 服务在容器内可能无法正常工作。--net=host 共享宿主机的网络命名空间,直接操作宿主机网卡。overlay2)可能因性能问题影响宿主机 I/O。-v 挂载宿主机目录时,容器可能修改或删除宿主机文件。fs.file-max)。CAP_SYS_ADMIN),但特权模式(--privileged)会赋予容器几乎所有权限。--userns=host),容器 root 等同于宿主机 root。/proc/sys、/sys 中的参数默认共享,容器可能修改宿主机内核参数(需 --sysctl 显式控制)。SIGKILL),强制终止容器。--cpus、--memory 限制资源,但容器仍可能通过漏洞(如 fork 炸弹)耗尽宿主机资源。--userns-remap)隔离 UID/GID。--privileged)。--cap-drop 移除不必要的权限(如 CAP_SYS_ADMIN)。Kata Containers 或 gVisor。Docker 的隔离性基于 Linux 命名空间和 cgroups,本质是进程级隔离,而非硬件级虚拟化。若需完全隔离,需结合虚拟机或专用容器运行时(如 Firecracker)。根据实际需求权衡隔离性与性能。