# Creating a docker image from a live ISO

##### Download Live ISO, example 

Example: debian ISO: **debian-live-13.1.0-amd64-standard.iso**

<p class="callout info">**https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/**</p>

##### Make a directory to mount the ISO

```bash
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 Debian 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"
```