Class DockerManager
Manages Docker container lifecycle for isolated build execution. Implements warm container pattern for fast subsequent builds.
public class DockerManager
- Inheritance
-
DockerManager
- Inherited Members
Constructors
DockerManager(IBuildLogger)
public DockerManager(IBuildLogger logger)
Parameters
loggerIBuildLogger
Methods
CheckDockerAvailability()
Checks Docker availability with a detailed failure reason. Distinguishes between CLI not installed and daemon not running to provide actionable, platform-specific error messages.
public DockerAvailability CheckDockerAvailability()
Returns
CleanArtifactsAsync(string)
Cleans artifacts directory inside the container.
public Task CleanArtifactsAsync(string containerId)
Parameters
containerIdstring
Returns
CopyProjectToContainerAsync(string, string)
Copies project files from host to container's /workspace directory. Excludes large/generated directories for efficiency. This is the key to isolation - the container works on a copy, not the original.
public Task CopyProjectToContainerAsync(string containerId, string projectRoot)
Parameters
Returns
EnsureContainerAsync(ContainerConfig)
Creates a new container or starts an existing one. For warm containers, re-copies project files to ensure fresh state. If --dind is requested but existing container doesn't have Docker socket, recreates it.
public Task<ContainerInfo> EnsureContainerAsync(ContainerConfig config)
Parameters
configContainerConfig
Returns
FindWarmContainerAsync(string)
Finds an existing warm container for the project.
public Task<ContainerInfo?> FindWarmContainerAsync(string containerName)
Parameters
containerNamestring
Returns
GetDockerInstallInstructions()
Gets installation instructions for the current OS.
public string GetDockerInstallInstructions()
Returns
HasDockerSocketMountedAsync(string)
Checks if the Docker socket is mounted in a container. Used to determine if an existing warm container supports --dind mode.
public Task<bool> HasDockerSocketMountedAsync(string containerId)
Parameters
containerIdstring
Returns
IsDockerAvailable()
Checks if Docker is available on the system. Convenience wrapper around CheckDockerAvailability().
public bool IsDockerAvailable()
Returns
RemoveContainerAsync(string)
Removes a container.
public Task RemoveContainerAsync(string containerName)
Parameters
containerNamestring
Returns
StopContainerAsync(string)
Stops a running container.
public Task StopContainerAsync(string containerId)
Parameters
containerIdstring