Logo

dev-resources.site

for different kinds of informations.

From Docker to Podman - VS Code DevContainers

Published at
10/14/2023
Categories
devops
docker
podman
vscode
Author
okikio
Categories
4 categories in total
devops
open
docker
open
podman
open
vscode
open
Author
6 person written this
okikio
open
From Docker to Podman - VS Code DevContainers

Been a while... ๐Ÿ‘€

It's been a minute, hasn't it? I've been...busy, but I'm back with something that I think you'll find both useful and intriguing. While I was away, I stumbled upon a nifty trick that involves swapping Docker for Podman in DevContainers on VS Code. This isn't a step-by-step guide; it's more like sharing a cool discovery I made. So, let's get to it!

GIF from Titanic of Rose Dewitt Bukater who is now much older than when the Titanic occured, saying "It's been 84 years"

A Quick Refresher on DevContainers ๐Ÿ

If you're new to the concept, DevContainers in VS Code are a way to containerize your development environment. This ensures that your setup is both portable and consistent, effectively eliminating the "it works on my machine" syndrome.

Think of DevContainers as your very own Codespace or Gitpod, but without needing the cloud. It's like having a sandbox, but your computer is the playground. You get to build your castles in an isolated space, keeping the rest of your system pristine.

The Podman Appeal ๐ŸŽธ

Switching gears to Podman, why would you want to replace Docker? Imagine Docker as the old, reliable minivan. It gets the job done, but it's not the sleekest. Podman is like the electric car that just rolled off the assembly lineefficient, user-friendly, and secure.

Docker has been the go-to containerization tool for years, but Podman is emerging as a strong alternative. Podman offers a few advantages:

  1. Rootless Containers : Run containers without needing root privileges, enhancing security. Learn more about rootless containers.

  2. Systemd Integration : Better integration with Linux's init system, systemd. For Linux users, this is a significant benefit. Podman's compatibility with systemd offers better process management and orchestration. Learn more about systemd.

  3. Follows Open Standards : Fully compatible with Open Container Initiative (OCI) standards. Podman is OCI-compliant, which means it adheres to industry standards for container images, making it easier to switch between different container technologies. Learn more about OCI.

So, if you're looking to break free from Docker's grasp, Podman is worth considering.

The Challenge: VS Code Loves Docker

Here's the hiccup: VS Code's DevContainers extension is tightly coupled with Docker. When you try to use Podman, VS Code throws a fit and keeps asking you to install Docker. That's the issue we're going to solve today.

Image

The Solution: Trick VS Code with a Shell Script

macOS

Step 1: Install Podman

First things first, you'll need to install Podman. On a Mac, you can use Homebrew:

brew install podman
Enter fullscreen mode Exit fullscreen mode

Step 2: Initialize and Start Podman Machine

Before using Podman, you need to initialize and start a Podman machine:

podman machine init
podman machine start
Enter fullscreen mode Exit fullscreen mode

Step 3: Create a Shell Script

VS Code is looking for a command named docker. We'll give it what it wants, but we'll secretly redirect it to podman.

Create a new shell script and name it docker:

sudo nano /usr/local/bin/docker
Enter fullscreen mode Exit fullscreen mode

In the script, add the following lines:

#!/bin/bash
exec podman "$@"
Enter fullscreen mode Exit fullscreen mode

Save the file and exit the text editor.

Step 4: Make the Script Executable

Now, make the script executable:

sudo chmod +x /usr/local/bin/docker
Enter fullscreen mode Exit fullscreen mode

Step 5: Restart VS Code

Close and reopen VS Code to apply the changes. It should now be none the wiser, happily using Podman instead of Docker.

Linux

Step 1: Install Podman

Open your terminal and run the following command to install Podman:

sudo apt install -y podman
Enter fullscreen mode Exit fullscreen mode

Steps 2-5: Follow the same steps as for macOS

Windows

Step 1: Install Podman for Windows

Download and install Podman from the official site.

Step 2: Create a Batch File

Create a batch file named docker.bat to act as an alias for Podman:

@echo off
podman %*
Enter fullscreen mode Exit fullscreen mode

Place this batch file in a directory that's in your system's PATH.

Option 1: Use an Existing Directory in PATH
  1. Open a Command Prompt and type echo %PATH% to see the directories currently in your PATH.

  2. Choose an existing directory that you have write access to, such as C:\Users\YourUsername\bin.

  3. Save or move your docker.bat file into that directory.

Option 2: Create a New Directory and Add It to PATH
  1. Create a new directory where you want to store your batch files, for example, C:\batch_files.

  2. Move your docker.bat file into this new directory.

  3. To add this directory to your PATH, right-click on 'This PC' or 'Computer' on your desktop or File Explorer, and choose Properties.

  4. On the left-hand side, click on Advanced system settings.

  5. Click on the Environment Variables button near the bottom right.

  6. Under the 'System variables' section, find and select the Path variable, then click on Edit.

  7. Click on New and add the path to your new directory, C:\batch_files.

  8. Click OK on all the dialog boxes to save your changes.

Verify the Setup

To verify that the batch file is accessible:

  1. Open a new Command Prompt window (important, as existing windows won't pick up the change).

  2. Type docker and hit Enter. If everything is set up correctly, this should now execute Podman due to the aliasing in your docker.bat file.

By following these steps, you ensure that the batch file is in a directory listed in your PATH, making it accessible from any command prompt window.

Step 3: Restart VS Code

Close and reopen VS Code to apply the changes.

Wrapping Up

There you have ita Podman-powered DevContainer in VS Code, right on your local machine. It's like having a VIP pass to a more secure and efficient coding environment. Whether you're a newcomer or a seasoned developer, I hope you find this as useful as I did.

So go ahead, give Podman a spin, and bring a little more freedom to your containerized development environments.

Bye!

Video gif. Two young men stand together. One holds up his fingers as if saying peace out and vanishes.


Originally posted on blog.okikio.dev

podman Article's
30 articles in total
Favicon
Nextcloud on Raspberry Pi - Fedora + Podman Quadlets
Favicon
Podman 3 and Docker Compose - How Does the Dockerless Compose Work?
Favicon
Rootless Containers: What They Are and Why You Should Use Them
Favicon
The Complete Podman vs Docker Analysis: Features, Performance & Security
Favicon
Exploring Podman and Beyond: Open Source Alternatives to Docker for Secure Containerization
Favicon
Is Dockerโ€™s Market Being Eroded? An In-Depth Comparison of Docker, ServBay, Homebrew, Podman, and MAMP
Favicon
Monitor container with Portainer
Favicon
Beyond Docker: Exploring Buildah and Podman for Container workflows
Favicon
Switching from docker to podman on Ubuntu
Favicon
How to Deploy a Fast API Application to a Kubernetes Cluster using Podman and Minikube
Favicon
Podman basics for beginners
Favicon
One Minute: Compose
Favicon
How to Install and Use Podman on Debian 12
Favicon
Pi-Hole setup using Quadlets
Favicon
Docker Vs Podman: A Comparison
Favicon
Exploring Podman Alternatives: A Deep Dive into Podman vs. Docker
Favicon
Instalando Podman no Ubuntu 22.04 LTS
Favicon
Podman and Docker: Deciphering the Pros and Cons of Each
Favicon
Containerization in Application Development: Choosing Between Podman and Docker
Favicon
Choosing the Right Containerization Tool: Docker, Podman, or Apptainer?
Favicon
Migrating from Docker to Podman: A Comprehensive Guide
Favicon
Allow low privileged ports inside podman container
Favicon
Podman/Docker container with a (GUI) remote desktop VNC on Raspberry PI 4
Favicon
Smallest Docker Image - 92B
Favicon
Docker vs Podman
Favicon
Transitioning from Docker to Podman: Navigating Challenges and Practical Solutions
Favicon
Cos'รจ Podman Desktop
Favicon
From Docker to Podman - VS Code DevContainers
Favicon
[ptbr] Podman, uma bela opรงรฃo.
Favicon
How to use PODMAN in place of docker in windows?

Featured ones: