8

How to replace Docker with Podman on a Mac

 3 years ago
source link: https://www.redhat.com/sysadmin/replace-docker-podman-macos
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

How to replace Docker with Podman on a Mac

Want to use Podman to work with containers? Here's what you need to know about Podman on a Mac.

Posted: March 24, 2021 | by Dave Meurer (Red Hat)

Image
How to replace Docker with Podman on MacOS

Several months ago, I came back to my desk after lunch and to my chagrin, my macOS was making a long constant blowing sound—the fan was on high speed. Now, mind you, I have a fairly new and beefy Mac. 2.4 GHz, 8-core, 64GB running Big Sur, 11.2.1. So what in the world could be triggering my fan to such a high level? I discovered that the culprit was Docker. And the only way to rid myself of the noise was a Docker restart.

At that moment, I added a task to my To-Do list: Replace Docker with Podman. However, early attempts and initial research proved difficult simply because I wanted it to be just as easy to start Podman on my Mac as is the Docker client. I use Alfred (Spotlight replacement) and launch most things with a quick cmd+space. So, if I couldn’t do the same with Podman, I was going to have to take a hard pass on the replacement. And, unfortunately, there isn’t a one-click, easy Podman macOS install, so I had to stitch a couple of few items together to get that quick launch. To help you have a better experience, I've documented the process here.

[ Readers also liked: From Docker Compose to Kubernetes with Podman ]

Resources

A couple of months ago, I was able to get Podman running on my Mac via podman-machine, but I ran out of time and motivation to convert it into something easy to launch. Fast forward a couple of months, podman-machine is now deprecated in lieu of Vagrant. I found a couple of good articles, like Brent and Ashley’s post on podman remote, which provided most of my answer and helped me figure out how to deal with some fun podman.sock errors. However, I couldn’t find my holy grail. I mean, I’m a lazy dude. My frustration level is measured by the amount of typing or clicks it takes me to do something. And if it’s more than a couple of clicks, I’ll need to go eat more pizza to calm me down. So, here it is in three main parts: The pre-requisites, creating a script, and then creating the macOS app.

Prerequisites

1. You’ll need the latest version of VirtualBox

2. Install Vagrant

3. Run $ brew install podman

Create the script

4. Create a directory to store the Vagrantfile, such as /Users/[username]/tools/podman (you’ll need to modify scripts below to use this directory)

5. Create the following Vagrantfile in your new directory. I’m using Andres’ Vagrant file, but I found others as well.

Vagrant.configure("2") do |config|
  config.vm.box = "fedora/32-cloud-base"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
  end

  config.vm.provision "shell", inline: <<-SHELL
    yum install -y podman

    groupadd -f -r podman

    #systemctl edit podman.socket
    mkdir -p /etc/systemd/system/podman.socket.d
    cat >/etc/systemd/system/podman.socket.d/override.conf <<EOF
[Socket]
SocketMode=0660
SocketUser=root
SocketGroup=podman
EOF
    systemctl daemon-reload
    echo "d /run/podman 0770 root podman" > /etc/tmpfiles.d/podman.conf
    sudo systemd-tmpfiles --create

    systemctl enable podman.socket
    systemctl start podman.socket

    usermod -aG podman $SUDO_USER
  SHELL
end

6. Add the following lines to your ~/.zshrc file to create global environment variables for the Podman host and SSH key. This step allows you to make a successful connection in any terminal window. Note the second variable contains a directory that needs to be changed to reflect your setup.

export CONTAINER_HOST=ssh://[email protected]:2222/run/podman/podman.sock
export CONTAINER_SSHKEY=/Users/[username]/tools/podman/.vagrant/machines/default/virtualbox/private_key

7. Create the following bash shell script. Note the change required to reflect your setup. I called my script pman.

#!/bin/bash

export VAGRANT_CWD=/Users/[username]/tools/podman

ACTION=$1

case $ACTION in
  "down")
    echo "Shutting down podman"
    vagrant halt
    ;;

  "up")
    echo "STARTING podman"
    vagrant up
    ;;

esac

At this point, you can open a terminal and type $ pman up to start Podman. But, I told you I was lazy, right? That’s way too many clicks and keypresses for my taste, so I made this a macOS app.

Make it a macOS app

1. Open up Automator on your Mac, and choose Application as your document.

2. Drag and drop the Run Shell Script item into the workflow, and type the following script:

export PATH=/usr/local/bin:$PATH

~/Dev/bin/pman up

Note: The example path ~/Dev/bin/pman will need to be updated to where you saved and named the bash script above.

Image
Add script to the Application creation

3. Save the Application. It should save directly into the Mac Applications folder. I called my Podman application Seals because of the Podman logo.

4. As an added bonus, I found the Podman logo and created a 128x128 PNG image with GIMP to use as the application icon:

  1. Open the 128x128 png in preview and click Edit > Copy
  2. Right-click the new Application, and click Get Info.
  3. Select the icon on the top left, and paste the contents of the clipboard.
Image
Get Info results for Seals application

[ Get this free ebook: Managing your Kubernetes clusters for dummies. ]

Wrap up

There you have it. Now you can use Spotlight or Alfred to run Podman. It’s just a cmd+space and a couple of letters away.

Image
Seals icon in Dock

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK