网络与虚拟机常见问题
目录
如何在容器运行时限制其允许的互联网访问类型,以防止其泄露数据或下载恶意代码?
对此没有内置机制,但可以通过主机上的进程级防火墙来解决。挂钩到 com.docker.vpnkit 用户空间进程并应用规则,规定其可以连接到何处(DNS URL 白名单;数据包/有效负载过滤器)以及允许其使用哪些端口/协议。
我可以阻止用户绑定 0.0.0.0 上的端口吗?
虽然无法通过 Docker Desktop 直接强制执行此操作,但它会继承主机上强制执行的任何防火墙规则。
有哪些选项可以将容器化的网络设置锁定到系统?如果不支持,操纵设置会有什么后果?
Docker 网络设置完全位于虚拟机本地,对系统没有任何影响。
我可以通过本地防火墙或 VPN 客户端对容器网络流量应用规则吗?
对于网络连接,Docker Desktop 使用一个用户空间进程(com.docker.vpnkit),该进程从启动它的用户那里继承防火墙规则、VPN、HTTP 代理属性等约束。
在 Windows 上运行具有 Hyper-V 后端的 Docker Desktop 是否允许用户创建任意虚拟机?
不行。DockerDesktopVM 这个名称是在服务代码中硬编码的,因此您不能使用 Docker Desktop 来创建或操作任何其他虚拟机。
我可以阻止用户在 Mac 上使用 Docker Desktop 时创建其他虚拟机吗?
在 Mac 上,启动虚拟机是一项非特权操作,因此 Docker Desktop 并不强制执行此操作。
当使用 Hyper-V 和/或 WSL2 时,Docker Desktop 是如何实现网络级隔离的?
VM 进程在 WSL 2(运行在 docker-desktop 发行版内)和 Hyper-V(运行在 DockerDesktopVM 内)中是相同的。主机/VM 通信使用 AF_VSOCK 虚拟机监控程序套接字(共享内存)。它不使用 Hyper-V 网络交换机或网络接口。所有主机网络均通过来自 com.docker.vpnkit.exe 和 com.docker.backend.exe 进程的标准 TCP/IP 套接字执行。有关更多信息,请参阅
Docker Desktop 网络底层工作原理。