Containers have changed how applications are developed, tested, and deployed. Docker is widely used, while Podman is an open-source alternative with similar capabilities and some differences. This guide covers their basics, installation, image building, and container management.
From servers to virtualization
Earlier application deployments could require many servers and expensive data centers, making operations complex and time-consuming. When each server ran only one workload, resources could be underused and applications were harder to scale.
Virtualization allows one physical server to run multiple operating systems, improving hardware utilization, reducing costs, and adding flexibility to server management.
Docker and its trade-offs
Docker is a platform for building, managing, and running containers. Docker can speed up development and deployment, reduce conflicts between environments, and make scaling easier.
Docker Desktop may involve a fee for some users, making Podman an alternative to consider. Licensing and pricing can change, so check the current terms for your use case.
Podman and container standards
Podman is a container-management tool that can run without a central daemon. It offers functionality similar to Docker, with differences that include daemonless operation and security considerations.
Docker and Podman use the Open Container Initiative (OCI) standards, which are intended to support compatibility between container images and tools.
Installing Podman and using Podman Machine
Start by installing Podman and Podman Compose on Linux, then check the installed version. For systems that are not Linux, Podman Machine can create and manage a virtual machine for running containers. The walkthrough names the commands podman machine init and starting the machine, then describes connecting to the VM over SSH.
Managing images
The walkthrough covers using a Docker-compatible client with Podman, pulling images from Docker Hub, searching and filtering results, listing local images, and understanding an image as a template for creating a container.
Creating and managing containers
The walkthrough covers using podman run to create and start a container, the -it, -t, and -i options, naming containers, listing active containers with podman ps, stopping a container, and removing one from the system.
Building your own images
A Dockerfile defines instructions for building an image. The topics include selecting a base image with FROM, assigning a version with a tag, and building with podman build and the -t option. The article also mentions Alpine Linux, checking image disk usage with podman system df, removing images with podman image rm, and running a container with --rm so it is removed when it exits.
Building an image for a Go application
The example topics cover updating and searching Alpine packages with apk, installing Go, checking the Go version, copying files into a container, running a Go program, and configuring CMD and ENTRYPOINT.
It then introduces multi-stage builds, compiling with go build, working with go mod, naming a build stage with a builder alias, copying output from that stage, setting a working directory, and exposing or using port 3000. These are the main steps to consider when building a container image for a Go application.
Summary and common questions
Understanding containers, installation, image management, and image creation can help developers apply these tools to application workflows. Key points:
- Docker is a widely used container technology.
- Podman is presented as an open-source alternative to Docker.
- OCI is a shared standard used by Docker and Podman.
- Dockerfiles describe how to build images.
- Build cache can make image builds faster.
- Dangling images are unused images that may be removed.
- Multi-stage builds can reduce image size.
ENTRYPOINTandCMDdefine commands a container runs.
For a free consultation, contact the team on LINE, or scan the QR code below.
