Compress docker images as tar packages

In this blog we will see how we can easily compress docker images as tar packages.

What is a docker image?

A docker images is a lightweight, standalone, and executable package that includes everything required to run a piece of software, including the code, runtime, libraries, and system tools. Docker images allow for consistency across different environments, making it easier to develop, test, and deploy applications.

What is a tarball in Linux?

In Linux, “tarball” refers to a compressed archive file created using the tar command. A typical tarball file has a .tar extension, indicating that it is an uncompressed tar archive. However, tarballs are often compressed further using utilities like gzip or bzip2, resulting in file extensions such as .tar.gz or .tar.bz2.

Here are some common types of tarballs:

  1. Uncompressed Tarball:
    • File Extension: .tar
    • Created using: tar -cvf archive.tar files_to_archive/
    • Extracted using: tar -xvf archive.tar
  2. Gzipped Tarball:
    • File Extension: .tar.gz or .tgz
    • Created using: tar -czvf archive.tar.gz files_to_archive/
    • Extracted using: tar -xzvf archive.tar.gz
  3. Bzip2-compressed Tarball:
    • File Extension: .tar.bz2 or .tbz2
    • Created using: tar -cjvf archive.tar.bz2 files_to_archive/
    • Extracted using: tar -xjvf archive.tar.bz2

Using docker for creating image tarballs

To compress and decompress Docker images as tar packages, you can use the docker save and docker load commands. These commands allow you to save a Docker image as a tarball and load it back into Docker.

Compress Docker Image

To compress a Docker image, use the docker save command to save the image to a tarball file, and then use gzip to compress it. For example:

# Save the Docker image to a tarball
docker save -o test_image.tar test_image

# Compress the tarball using gzip
gzip test_image.tar

This will create a compressed tarball file named test_image.tar.gz.

Decompress Docker Image

To decompress a Docker image, use gzip to decompress the tarball, and then use docker load to load it back into Docker. For example:

# Decompress the tarball using gzip
gunzip test_image.tar.gz

# Load the Docker image from the tarball
docker load -i test_image.tar

Replace test_image with the name or ID of the Docker image you want to compress or decompress.

Keep in mind that the docker save and docker load commands are used to export and import Docker images as tarballs. The gzip command is used here for compression, but you can use other compression tools like xz or bzip2 depending on your preferences and requirements.

Also, note that compressed Docker images are often shared or stored in compressed form to save bandwidth and disk space. When you decompress and load them back into Docker, they are fully functional Docker images.

Using podman for creating image tarballs

Podman, an alternative container runtime to Docker, can also be used to compress and decompress container images as tar packages. The commands are similar to those used with Docker and as we seen above.

Compress Docker Image

To compress a Docker image using Podman, use the podman save command to save the image to a tarball file, and then use gzip or another compression tool to compress it. For example:

# Save the Docker image to a tarball using Podman
podman save -o test_image.tar test_image

# Compress the tarball using gzip
gzip test_image.tar

This will create a compressed tarball file named test_image.tar.gz.

Decompress Docker Image

To decompress a Docker image using Podman, use gzip or another tool to decompress the tarball, and then use podman load to load it back into Podman. For example:

# Decompress the tarball using gzip
gunzip test_image.tar.gz

# Load the Docker image from the tarball using Podman
podman load -i test_image.tar

Replace test_image with the name or ID of the Podman container image you want to compress or decompress.

Just like with Docker, you can choose different compression tools based on your preferences and requirements. The process of saving and loading images with Podman is similar to Docker, making it straightforward to work with container images.

Ensure you have the necessary permissions to access and manipulate container images, and adjust the commands based on your specific use case and requirements when working with Podman.

Conclusion

In this blog, we delved into the step-by-step process of compressing and decompressing docker images using common command-line tools such as docker save, tar, gzip, and docker load. By doing so, we’ve highlighted the significance of compressing Docker images for efficient storage, faster transfers, and simplified archival processes. Compressing Docker images into tar packages not only optimises storage space but also facilitates seamless sharing and distribution. This approach is particularly valuable in scenarios where bandwidth is a concern, and when transferring or archiving images across different environments.

For more such tutorials please go our learning page.

Leave a Comment