网络和虚拟机常见问题

运行时,如何限制容器允许的互联网访问类型,以防止其能够窃取数据或下载恶意代码?

没有内置机制可以实现这一点,但可以通过主机上的进程级防火墙解决。挂钩 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 如何实现网络层面隔离?

WSL 2(在 docker-desktop 发行版内运行)和 Hyper-V(在 DockerDesktopVM 内运行)的虚拟机进程是相同的。主机/虚拟机通信使用 AF_VSOCK hypervisor 套接字(共享内存)。它不使用 Hyper-V 网络交换机或网络接口。所有主机网络都使用来自 com.docker.vpnkit.execom.docker.backend.exe 进程的普通 TCP/IP 套接字执行。有关更多信息,请参见 Docker Desktop 网络工作原理揭秘

页面选项