#!/bin/bash
image_list=($(docker images --format '{
{.Repository}}:{
{.Tag}}'))
if [ ${
#image_list[@]} -eq 0 ]; then
echo "No images found."
exit 1
fi
echo "Available images:"
for i in "${
!image_list[@]}"; do
image="${image_list[$i]}"
image_name="${image##*/}"
echo "[$i] $image_name ($image)"
done
read -p "Enter the index of the image to save: " choice
re='^[0-9]+$'
if ! [[ $choice =~ $re ]]; then
echo "Error: Invalid input, please enter a number."
exit 1
fi
if (( choice < 0 || choice >= ${#image_list[@]} )); then
echo "Error: Index out of range."
exit 1
fi
selected_image="${image_list[$choice]}"
image_name="${selected_image##*/}"
image_filename="${image_name//:/_}"
timestamp=$(date +"%Y%m%d%H%M%S")
output_file="${image_filename}_$timestamp.tar"
echo "Saving image '$selected_image' as $output_file..."
docker save -o "$output_file" "$selected_image"
echo "Image saved successfully."