full diff: https://2226e083fc390003ae5aa8325c3c92789afa0e7a...b3f49c06ffaeef24d09c6c08ec8ec8425a0303e2 includes: - microsoft/hcsshim#718 wclayer: Work around Windows bug when expanding sandbox size - fixes microsoft/hcsshim#708 Windows Host Compute Service bug breaks docker (and other) sandboxes bigger than 20G on Windows 1903 - fixes microsoft/hcsshim#624The hcsshim on Windows 10 1903 always fails to build Docker image - fixes/addresses docker/for-win#3884 An error occurred while attempting to build Docker image (especially this comment and the next comments after: https://github.com/docker/for-win/issues/3884#issuecomment-498939672) - fixes/addresses docker/for-win#4100 Windows 1903 fails when storage-opt used - fixes moby/moby#36831 hcsshim::PrepareLayer failed in Win32: The parameter is incorrect (https://github.com/moby/moby/issues/36831#issuecomment-498612392) - fixes Stannieman/audacity-with-asio-builder#5 Docker won't build container - fixes MicrosoftDocs/visualstudio-docs#3523 Error when running build with storage-opts set - fixes moby/moby#39524 Docker build windows 19.03 --storage-opt size>20G Note that this is a temporary workaround for a bug in the platform, and will be reverted once that is addressed: - microsoft/hcsshim#721 Revert 718 when Windows 19H1 has expand sandbox fix Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
84 lines
3.7 KiB
Go
84 lines
3.7 KiB
Go
package cow
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
|
|
"github.com/Microsoft/hcsshim/internal/schema1"
|
|
hcsschema "github.com/Microsoft/hcsshim/internal/schema2"
|
|
)
|
|
|
|
// Process is the interface for an OS process running in a container or utility VM.
|
|
type Process interface {
|
|
// Close releases resources associated with the process and closes the
|
|
// writer and readers returned by Stdio. Depending on the implementation,
|
|
// this may also terminate the process.
|
|
Close() error
|
|
// CloseStdin causes the process's stdin handle to receive EOF/EPIPE/whatever
|
|
// is appropriate to indicate that no more data is available.
|
|
CloseStdin(ctx context.Context) error
|
|
// Pid returns the process ID.
|
|
Pid() int
|
|
// Stdio returns the stdio streams for a process. These may be nil if a stream
|
|
// was not requested during CreateProcess.
|
|
Stdio() (_ io.Writer, _ io.Reader, _ io.Reader)
|
|
// ResizeConsole resizes the virtual terminal associated with the process.
|
|
ResizeConsole(ctx context.Context, width, height uint16) error
|
|
// Kill sends a SIGKILL or equivalent signal to the process and returns whether
|
|
// the signal was delivered. It does not wait for the process to terminate.
|
|
Kill(ctx context.Context) (bool, error)
|
|
// Signal sends a signal to the process and returns whether the signal was
|
|
// delivered. The input is OS specific (either
|
|
// guestrequest.SignalProcessOptionsWCOW or
|
|
// guestrequest.SignalProcessOptionsLCOW). It does not wait for the process
|
|
// to terminate.
|
|
Signal(ctx context.Context, options interface{}) (bool, error)
|
|
// Wait waits for the process to complete, or for a connection to the process to be
|
|
// terminated by some error condition (including calling Close).
|
|
Wait() error
|
|
// ExitCode returns the exit code of the process. Returns an error if the process is
|
|
// not running.
|
|
ExitCode() (int, error)
|
|
}
|
|
|
|
// ProcessHost is the interface for creating processes.
|
|
type ProcessHost interface {
|
|
// CreateProcess creates a process. The configuration is host specific
|
|
// (either hcsschema.ProcessParameters or lcow.ProcessParameters).
|
|
CreateProcess(ctx context.Context, config interface{}) (Process, error)
|
|
// OS returns the host's operating system, "linux" or "windows".
|
|
OS() string
|
|
// IsOCI specifies whether this is an OCI-compliant process host. If true,
|
|
// then the configuration passed to CreateProcess should have an OCI process
|
|
// spec (or nil if this is the initial process in an OCI container).
|
|
// Otherwise, it should have the HCS-specific process parameters.
|
|
IsOCI() bool
|
|
}
|
|
|
|
// Container is the interface for container objects, either running on the host or
|
|
// in a utility VM.
|
|
type Container interface {
|
|
ProcessHost
|
|
// Close releases the resources associated with the container. Depending on
|
|
// the implementation, this may also terminate the container.
|
|
Close() error
|
|
// ID returns the container ID.
|
|
ID() string
|
|
// Properties returns the requested container properties targeting a V1 schema container.
|
|
Properties(ctx context.Context, types ...schema1.PropertyType) (*schema1.ContainerProperties, error)
|
|
// PropertiesV2 returns the requested container properties targeting a V2 schema container.
|
|
PropertiesV2(ctx context.Context, types ...hcsschema.PropertyType) (*hcsschema.Properties, error)
|
|
// Start starts a container.
|
|
Start(ctx context.Context) error
|
|
// Shutdown sends a shutdown request to the container (but does not wait for
|
|
// the shutdown to complete).
|
|
Shutdown(ctx context.Context) error
|
|
// Terminate sends a terminate request to the container (but does not wait
|
|
// for the terminate to complete).
|
|
Terminate(ctx context.Context) error
|
|
// Wait waits for the container to terminate, or for the connection to the
|
|
// container to be terminated by some error condition (including calling
|
|
// Close).
|
|
Wait() error
|
|
}
|