Introduction

Containers have revolutionized the way we develop, package, and deploy applications. They provide a consistent and reproducible environment, making it easier to manage dependencies and ensure that applications run the same way, regardless of where they are deployed. One of the tools that have made this possible is Podman, a daemonless container engine for developing, managing, and running OCI Containers on your Linux System. This blog post will guide you through the process of creating your own Ubuntu container with Podman on a Mac and persisting changes.

What is Podman?

Podman is an open-source project that provides a command-line interface for managing containers and images. It is designed to be a drop-in replacement for Docker, but without the need for a daemon to run in the background. This makes it more lightweight and secure, as it doesn't require root privileges to run containers.

Installing Podman on Mac

Before we can start creating our Ubuntu container, we need to install Podman on our Mac. Unfortunately, Podman doesn't natively support MacOS, but we can use a virtual machine (VM) to run it. Here's how:

  1. Install Homebrew: Homebrew is a package manager for MacOS. Open Terminal and run the following command: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. Install Podman: Once Homebrew is installed, you can install Podman by running: brew install podman
  3. Create a VM: After installing Podman, you need to create a VM to run it. Use the following command: podman machine init
  4. Start the VM: Now, start the VM with the command: podman machine start

Creating an Ubuntu Container

With Podman installed and running, we can now create our Ubuntu container. Here's how:

  1. Pull the Ubuntu image: The first step is to pull the Ubuntu image from the Docker Hub. Run the following command: podman pull ubuntu
  2. Run the Ubuntu container: After pulling the image, you can run it with the command: podman run -it ubuntu bash

This command will start an interactive session in the Ubuntu container. You can now run any command inside the container, just like you would on a regular Ubuntu system.

Persisting Changes

One of the challenges with containers is that they are ephemeral, meaning any changes you make inside the container are lost when it is stopped. However, Podman provides a way to persist changes using volumes.

  1. Create a volume: To create a volume, use the following command: podman volume create myvolume
  2. Attach the volume to the container: When running your container, you can attach the volume using the -v option: podman run -it -v myvolume:/data ubuntu bash

This command will mount the volume myvolume to the /data directory inside the container. Any changes you make to the /data directory will be persisted across container restarts.

Conclusion

Podman is a powerful tool for managing containers, and it's not as daunting as it might seem at first. With this guide, you should now be able to create your own Ubuntu container on a Mac, and persist changes using volumes. Happy containerizing!