DEV Community

Cover image for Podman basics for beginners
francotel
francotel

Posted on

Podman basics for beginners

Podman: An Alternative to Docker for Easier Application Development and Deployment

If you've worked with Docker before, you know how it can help us develop, deploy, and run applications easily. But did you know there's an alternative tool called Podman that offers some unique advantages? In this post, we'll dive into Podman and explore how you can use it to manage your containerized applications with ease.

Table of Contents
What is Podman?
Podman vs. Docker: Key Differences
Installing Podman
Basic Podman Commands
Practical Example: Deploying a Service with Podman
Advantages of Podman
Final Thoughts
Additional Resources

What is Podman?

Podman is an open-source tool developed by Red Hat that allows you to create and manage containers in a similar way to Docker, but with some key differences. Podman presents itself as a more secure and daemon-less alternative to Docker, making it a great choice for environments with stricter security requirements or more restrictive policies.

Podman Logo

Podman vs. Docker: Key Differences

While Podman and Docker share many similarities, there are several important differences between the two:

  • Podman doesn't require a running daemon, which makes it more secure and less prone to security issues.
  • Podman is compatible with most Docker commands, making it easier to migrate from Docker.
  • Podman uses a daemon-less architecture, which means containers run natively on the host without a central process.
  • Podman provides better integration with Kubernetes and other container orchestration tools.

Installing Podman

The installation process for Podman varies depending on your operating system. In this example, we'll show you how to install Podman on a Debian/Ubuntu-based system (22.04 version):



# Update the System
sudo apt update && sudo apt upgrade -y


Enter fullscreen mode Exit fullscreen mode


# Installing Podman Using apt
sudo apt install -y podman


Enter fullscreen mode Exit fullscreen mode


# Verify the Installation
podman --version 

# Output
> podman --version
podman version 4.9.3


Enter fullscreen mode Exit fullscreen mode

Basic Podman Commands

Here are some of the basic Podman commands you can use:



# Download an image from a registry:
podman pull <image>

# Create and run a container from an image:
podman run <image>

# List running containers:
podman ps

# Stop a running container:
podman stop <container>

# Remove a container:
podman rm <container>

# Create a volume:
podman volume create <volume>

# List existing volumes:
podman volume ls


Enter fullscreen mode Exit fullscreen mode

Practical Example: Deploying a Service with Podmam

In this example, we'll deploy a simple web service using Podman:

First, let's pull the Nginx image from the container registry:



# Pull the nginx image
podman pull nginx


Enter fullscreen mode Exit fullscreen mode

nginx image

podman pull image

podman image nginx

Next, we'll create and run a new Nginx container:



# Create and run an nginx container
podman run -d -p 80:80 --name nginx nginx


Enter fullscreen mode Exit fullscreen mode

Let's break down this command:

  • podman run: This tells Podman to create and run a new container.
  • -d: This runs the container in detached mode, which means it will run in the background.
  • -p 80:80: This maps port 80 on the host system to port 80 inside the container. This allows us to access the web server from the host.
  • --name nginx: This gives the container a friendly name, "nginx".
  • nginx: This specifies the image to use for the container, in this case, the Nginx image we pulled earlier.

Now, if we run podman ps, we should see our Nginx container running:
podman run

podman ps

Access the web service at http://localhost
localhost

If you need to stop the container, you can use the podman stop command:



podman stop nginx


Enter fullscreen mode Exit fullscreen mode

And to remove the container, you can use the podman rm command:



podman rm nginx


Enter fullscreen mode Exit fullscreen mode

This example demonstrates the basic workflow of using Podman to deploy a simple web service. In a real-world scenario, you would likely create a more complex application using multiple containers, configure networking between them, and potentially integrate with other tools like Kubernetes for orchestration.

Advantages of Podman

Some of the main advantages of Podman over Docker include:

  • Improved security by not requiring a daemon.
  • Better integration with Kubernetes and other orchestration tools.
  • Compatibility with most Docker commands.
  • Daemon-less architecture, making it more efficient and scalable.

Final Thoughts

Podman presents an interesting alternative to Docker, especially in environments that require more security and reliability. While the learning curve may be similar, the architectural and security differences make Podman a option worth considering for developing and deploying containerized applications.

Additional Resources

Top comments (1)

Collapse
 
moopet profile image
Ben Sinclair

Podman doesn't require a running daemon, which makes it more secure and less prone to security issues.

Podman uses a daemon-less architecture, which means containers run natively on the host without a central process.

These are fundamentally the same point, and I don't follow how you get to the conclusion that daemon-less means more secure?