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)。根据实际需求权衡隔离性与性能。