Currently when creating VM-isolated containers, we rely on the HCS to implement the host-to-guest "bridge". The bridge is used communicate with the GCS for things such as mounting file systems, creating containers, and launching processes. This works well, but it makes it hard to diagnose failures and expensive to fix bugs, inhibits Linux-specific protocol changes, and adds additional context switches to each operation (including process IO relaying).
This issue tracks support for an external bridge, implemented in the shim, as opposed to the internal bridge, implemented in the Windows platform. This requires the shim to listen on hvsock for the guest bridge to connect and implement the same protocol as the internal bridge. We can only do this on >= RS5 hosts where the HCS exposes low-level VM creation APIs.
And for non-isolated containers, we of course must continue to use the existing HCS APIs for container management.
Currently when creating VM-isolated containers, we rely on the HCS to implement the host-to-guest "bridge". The bridge is used communicate with the GCS for things such as mounting file systems, creating containers, and launching processes. This works well, but it makes it hard to diagnose failures and expensive to fix bugs, inhibits Linux-specific protocol changes, and adds additional context switches to each operation (including process IO relaying).
This issue tracks support for an external bridge, implemented in the shim, as opposed to the internal bridge, implemented in the Windows platform. This requires the shim to listen on hvsock for the guest bridge to connect and implement the same protocol as the internal bridge. We can only do this on >= RS5 hosts where the HCS exposes low-level VM creation APIs.
And for non-isolated containers, we of course must continue to use the existing HCS APIs for container management.
cc @jterry75 @kevpar @jhowardmsft