Installing Podman remote client on macOS using vagrant

Installing podman as a remote client on macOS using vagrant. Vagrant setup is not covered in this post.

Podman remote client

Podman is the tool to start and manage containers. On macOS we have to use a thin remote-client that connects to a real Podman process running on a Linux host.

Here are the main steps how to configure the remote-client to work with a Linux host:

  • Create a linux machine using Vagrant
  • Set key based ssh as root to the Linux host
  • Install remote-client binary with Homebrew: brew cask install podman

Create a fedora vagrant box.

$ mkdir fedora-box && cd fedora-box
$ echo "Vagrant.configure("2") do |config|
  config.vm.box = "generic/fedora30"
  config.vm.hostname = "fedora30"
  config.vm.provider "virtualbox" do |v|
    v.memory = 1024
    v.cpus = 1
  end
end" >> Vagrantfile
$ vagrant up && vagrant ssh

On macOS create new ssh keys and copy newly generated public key.

$ ssh-keygen
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3...

Add ssh keys copied earlier on linux host to .ssh/authorized_keys.

echo "ssh-rsa AAAAB3..." >> /root/.ssh/authorized_keys

On linux host install Podman and varlink socket. This is used by the remote-client to execute commands calling Podman’s API.

$ sudo dnf --enablerepo=updates-testing install podman libvarlink-util libvarlink

Install podman on macOS using homebrew

$ brew cask install podman

Once podman is installed, create a connection parameters in $HOME/.config/containers/podman-remote.conf

$ cat <<EOF >$HOME/.config/containers/podman-remote.conf
[connections]
    [connections.host1]
    destination = "127.0.0.1"
    username = "root"
    default = true
    port = 2222
EOF

# With the remoting file configured we can run podman simply as:
$ podman images
REPOSITORY   TAG   IMAGE ID   CREATED   SIZE

Verify running a container:

podman run --name tomcat -d docker.io/tomcat
Trying to pull docker.io/tomcat...
....
d2e6db3c7....

Building images:

Note: The podman-remote.conf file seems to be ignored by the podman build command, so we have to add --remote-host 127.0.0.1 --username root --port 2222 to each command

$ podman --remote-host 127.0.0.1 --username root --port 2222 build --tag mytag .