GetContainerLayerContents: add
This commit is contained in:
parent
163a53b972
commit
523f959ad3
|
@ -0,0 +1,51 @@
|
|||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$imageName
|
||||
)
|
||||
|
||||
# Save the Docker image as a tarball
|
||||
$imageTar = "$imageName.tar"
|
||||
docker save -o $imageTar $imageName
|
||||
|
||||
# Create a temporary directory to extract layers
|
||||
$tempDir = [System.IO.Path]::GetTempPath() + [System.Guid]::NewGuid().ToString()
|
||||
New-Item -ItemType Directory -Force -Path $tempDir
|
||||
|
||||
# Extract the image tarball using 'tar' command
|
||||
tar -xf $imageTar -C $tempDir
|
||||
|
||||
# Function to list files in a layer
|
||||
function ListLayerFiles {
|
||||
param (
|
||||
[string]$layerPath
|
||||
)
|
||||
|
||||
$layerTar = Get-ChildItem -Path $layerPath -Filter "*.tar" -File
|
||||
$layerDir = [System.IO.Path]::Combine($tempDir, [System.IO.Path]::GetRandomFileName())
|
||||
New-Item -ItemType Directory -Force -Path $layerDir
|
||||
|
||||
# Extract the layer tarball using 'tar'
|
||||
tar -xf $layerTar.FullName -C $layerDir
|
||||
|
||||
# List files in the layer
|
||||
Write-Host "Files in layer:"
|
||||
Get-ChildItem -Path $layerDir -Recurse
|
||||
}
|
||||
|
||||
# List all layers and ask user to choose one
|
||||
$layerDirs = Get-ChildItem -Path $tempDir -Directory
|
||||
$layerDirs | ForEach-Object -Begin { $i = 0 } -Process {
|
||||
Write-Host "[$i]: $($_.Name)"
|
||||
$i++
|
||||
}
|
||||
|
||||
$userChoice = Read-Host "Enter the index of the layer to list"
|
||||
if ($userChoice -lt $layerDirs.Count -and $userChoice -ge 0) {
|
||||
ListLayerFiles -layerPath $layerDirs[$userChoice].FullName
|
||||
} else {
|
||||
Write-Host "Invalid index selected."
|
||||
}
|
||||
|
||||
# Cleanup
|
||||
Remove-Item -Path $imageTar
|
||||
Remove-Item -Path $tempDir -Recurse
|
Loading…
Reference in New Issue