Creating a docker image from a live ISO
Download Live ISO, example
Example: debian ISO: debian-live-13.1.0-amd64-standard.iso
https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/
Make a directory to mount the ISO
sudo mkdir /media/iso
Mount the ISO to the /media/iso
sudo mount -o loop debian-live-13.1.0-amd64-standard.iso /media/iso
Extract the Root Filesystem using SquashFS
sudo unsquashfs -d debian-fs /media/iso/live/filesystem.squashfs
Delete unnecessary files
sudo rm -rf "debian-fs/proc" "debian-fs/sys" "debian-fs/dev" "debian-fs/run"
Create a compressed file of the root filesystem
sudo tar -C debian-fs -czf debian-fs.tar.gz .
Import the compressed Debian filesystem into Docker as an Image
cat debian-fs.tar.gz | docker import - debian-image:latest
Run the Docker Container
docker run -it debian-image /bin/bash
Script to create a Debian Docker Image from a Debain ISO
#!/bin/bash
DEBIAN_ISO="debian-live-13.1.0-amd64-standard.iso"
MOUNT_DIR="/media/iso"
EXTRACT_DIR="./debian-fs"
TARBALL_NAME="debian-fs.tar.gz"
DOCKER_IMAGE_NAME="debian-image:latest"
sudo mkdir -p "$MOUNT_DIR"
sudo mount -o loop "$DEBIAN_ISO" "$MOUNT_DIR"
sudo unsquashfs -d "$EXTRACT_DIR" "$MOUNT_DIR/live/filesystem.squashfs"
sudo rm -rf "$EXTRACT_DIR/proc" "$EXTRACT_DIR/sys" "$EXTRACT_DIR/dev" "$EXTRACT_DIR/run"
sudo tar -C "$EXTRACT_DIR" -czf "$TARBALL_NAME" .
cat "$TARBALL_NAME" | docker import - "$DOCKER_IMAGE_NAME"
echo "Run your new Debian Docker image with:"
echo " docker run -it $DOCKER_IMAGE_NAME /bin/bash"