private/Test-DockerContainer.ps1

function Test-DockerContainer {
    <#
    .SYNOPSIS
        Detects if running inside a Docker container.
    .DESCRIPTION
        Checks multiple indicators to reliably detect Docker/container environments:
        - /.dockerenv file (Docker)
        - /proc/1/cgroup contents (Docker, containerd, Kubernetes)
        - Environment variables (container runtimes)
    .EXAMPLE
        if (Test-DockerContainer) {
            Write-Host "Running in a container"
        }
    .OUTPUTS
        [bool] True if running in a container, False otherwise.
    #>

    [CmdletBinding()]
    [OutputType([bool])]
    param()

    # Check for /.dockerenv file (created by Docker)
    if (Test-Path '/.dockerenv') {
        Write-PSFMessage -Level Debug -Message "Docker detected via /.dockerenv"
        return $true
    }

    # Check cgroup for container indicators
    if (Test-Path '/proc/1/cgroup') {
        $cgroup = Get-Content '/proc/1/cgroup' -Raw -ErrorAction SilentlyContinue
        if ($cgroup -match 'docker|containerd|kubepods|lxc') {
            Write-PSFMessage -Level Debug -Message "Container detected via /proc/1/cgroup"
            return $true
        }
    }

    # Check for container-related environment variables
    if ($env:container -eq 'docker' -or $env:DOCKER_CONTAINER -or $env:KUBERNETES_SERVICE_HOST) {
        Write-PSFMessage -Level Debug -Message "Container detected via environment variable"
        return $true
    }

    return $false
}