GetContainerLayerContents: add
This commit is contained in:
		
							
								
								
									
										51
									
								
								GetContainerLayerContents.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								GetContainerLayerContents.ps1
									
									
									
									
									
										Normal file
									
								
							| @ -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 | ||||
		Reference in New Issue
	
	Block a user