网络和虚拟机常见问题解答

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

没有内置机制来解决这个问题,但可以通过主机上的进程级防火墙来解决。挂钩com.docker.vpnkit用户空间进程并应用可以连接的规则(DNS URL 白名单;数据包/有效负载过滤器)以及允许使用哪些端口/协议。

我可以阻止用户绑定0.0.0.0上的端口吗?

没有直接的方法可以通过 Docker Desktop 强制执行此操作,但它会继承在主机上强制执行的任何防火墙规则。

有哪些选项可以将容器化网络设置锁定到系统?如果不支持,操作设置会产生任何后果吗?

Docker 网络设置完全位于虚拟机本地,对系统没有影响。

我可以通过本地防火墙或 VPN 客户端对容器网络流量应用规则吗?

对于网络连接,Docker Desktop 使用用户空间进程 ( com.docker.vpnkit),该进程从启动它的用户继承防火墙规则、VPN、HTTP 代理属性等约束。

使用 Hyper-V 后端运行适用于 Windows 的 Docker Desktop 是否允许用户创建任意 VM?

不可以。该DockerDesktopVM名称硬编码在服务代码中,因此您无法使用 Docker Desktop 创建或操作任何其他虚拟机。

我可以阻止用户在 Mac 上使用 Docker Desktop 时创建其他虚拟机吗?

在 Mac 上,启动 VM 是一项非特权操作,因此 Docker Desktop 不会强制执行。

使用 Hyper-V 和/或 WSL2 时,Docker Desktop 如何实现网络级隔离?

docker-desktopWSL 2(在发行版内运行)和 Hyper-V(在 发行版内运行)的 VM 进程相同DockerDesktopVM。主机/VM 通信使用AF_VSOCK虚拟机管理程序套接字(共享内存)。它不使用 Hyper-V 网络交换机或网络接口。所有主机网络都是使用com.docker.vpnkit.exe和进程中的普通 TCP/IP 套接字来执行的com.docker.backend.exe。有关更多信息,请参阅 Docker 桌面网络的底层工作原理