Run the Astro CLI using Podman
The Astro CLI requires a container management engine to run Apache Airflow components on your local machine and deploy to Astro. For example, the astro dev start
and astro deploy
commands both require containers.
By default, the Astro CLI uses Docker as its container management engine. However, if your organization uses Podman to run and manage containers, you can configure the Astro CLI to use it instead. Podman is a secure, free, and open source alternative to Docker that doesn't require root access and orchestrates containers without using a centralized daemon.
Configure the Astro CLI to use Podman
- Mac
- WSL2 on Windows
- Linux
Set up Podman on a Mac operating system so you can run Apache Airflow locally and deploy to Astro with Podman containers.
Prerequisites
- Podman 3 or later. See Getting started with Podman.
- A running Podman machine with at least 4 GiB of RAM. To confirm that Podman is running, run
podman ps
. - (M1 MacOS) Turn on rootful mode for Podman by using
podman machine set --rootful
. A Podman bug currently causes issues with volumes when running in rootless mode on M1.
If you receive an error after running podman ps
, there is likely a problem with your Podman connection. You might need to set the system-level DOCKER_HOST
environment variable to be the location of your Podman service socket:
-
Run the following command to identify the connection URI for
podman-machine-default
:podman system connection ls
The output should look like the following:
podman-machine-default* /Users/user/.ssh/podman-machine-default ssh://core@localhost:54523/run/user/1000/podman/podman.sock
podman-machine-default-root /Users/user/.ssh/podman-machine-default ssh://root@localhost:54523/run/podman/podman.sock -
Copy the value in the
URI
column frompodman-machine-default*
. This is typicallyunix:///run/podman/podman.sock
, but it can vary based on your installation. -
Set your
DOCKER_HOST
environment variable to the value of the URI.
Setup
-
Run the following command to confirm that Podman has access to Astro images at
docker.io
:podman run --rm -it postgres:12.6 whoami
If this command fails, use Podman Desktop to change Podman's default image registry location to
docker.io
. See Provide pre-defined registries. -
Run the following command to set Podman as your container management engine for the Astro CLI:
astro config set -g container.binary podman
If you're using Podman 3, additionally run the following command:
astro config set -g duplicate_volumes false
Set up Podman on Windows so you can run Apache Airflow locally and deploy to Astro with Podman containers.
Prerequisites
- Podman 3 or later installed on Windows Subsystem for Linux version 2 (WSL 2) using Ubuntu 22.04 or later. See Install Linux on Windows with WSL and Getting started with Podman.
- A running Podman machine with at least 4 GiB of RAM. To confirm that Podman is running, run
podman ps
in your Linux terminal. - The Astro CLI Linux distribution installed on WSL 2. See Install the Astro CLI on Linux.
If you receive an error after running podman ps
, there is likely a problem with your Podman connection. You might need to set the system-level DOCKER_HOST
environment variable to be the location of your Podman service socket:
-
In a WSL 2 terminal, run the following command to identify the connection URI for
podman-machine-default
:podman system connection ls
The output should look like the following:
podman-machine-default* /Users/user/.ssh/podman-machine-default ssh://core@localhost:54523/run/user/1000/podman/podman.sock
podman-machine-default-root /Users/user/.ssh/podman-machine-default ssh://root@localhost:54523/run/podman/podman.sock -
Copy the value in the
URI
column frompodman-machine-default*
. This is typicallyunix:///run/podman/podman.sock
, but it can vary based on your installation. -
Set your
DOCKER_HOST
environment variable to the value of the URI.
Setup
-
In a WSL 2 terminal, run the following command to confirm that Podman has access to Astro images at
docker.io
:podman run --rm -it postgres:12.6 whoami
If this command fails, run the following command to change Podman's default image registry location to
docker.io
:cat << EOF | sudo tee -a /etc/containers/registries.conf.d/shortnames.conf
"postgres" = "docker.io/postgres"
EOF -
Run the following command to set Podman as your container management engine for the Astro CLI:
astro config set -g container.binary podman
If you're using Podman 3, additionally run the following command:
astro config set -g duplicate_volumes false
Set up Podman on Linux so you can run Apache Airflow locally and deploy to Astro with Podman containers.
Prerequisites
- Podman 3 or later. See Getting started with Podman.
- A running Podman machine with at least 4 GiB of RAM. To confirm that Podman is running, run
podman ps
.
If you receive an error after running podman ps
, there is likely a problem with your Podman connection. You might need to set the system-level DOCKER_HOST
environment variable to be the location of your Podman service socket:
-
Run the following command to identify the connection URI for
podman-machine-default
:podman system connection ls
The output should look like the following:
podman-machine-default* /Users/user/.ssh/podman-machine-default ssh://core@localhost:54523/run/user/1000/podman/podman.sock
podman-machine-default-root /Users/user/.ssh/podman-machine-default ssh://root@localhost:54523/run/podman/podman.sock -
Copy the value in the
URI
column frompodman-machine-default*
. This is typicallyunix:///run/podman/podman.sock
, but it can vary based on your installation. -
Set your
DOCKER_HOST
environment variable to the value of the URI.
Setup
-
Run the following command to confirm that Podman has access to Astro images at
docker.io
:podman run --rm -it postgres:12.6 whoami
If this command fails, run the following command to change Podman's default image registry location to
docker.io
:cat << EOF | sudo tee -a /etc/containers/registries.conf.d/shortnames.conf
"postgres" = "docker.io/postgres"
EOF -
Run the following command to set Podman as your container management engine for the Astro CLI:
astro config set -g container.binary podman
If you're using Podman 3, additionally run the following command:
astro config set -g duplicate_volumes false
Troubleshoot your Podman configuration
The following error can sometimes occur when the CLI tries to build your Astro Runtime image using Podman:
WARN[0010] SHELL is not supported for OCI image format, [/bin/bash -o pipefail -e -u -x -c] will be ignored. Must use `docker` format
To resolve this issue, run the following command to set the BUILDAH_FORMAT
environment variable on your machine:
export BUILDAH_FORMAT=docker
Switch between Docker and Podman
After you set up the Astro CLI to use Podman on your local machine, the CLI automatically runs Podman containers whenever you run a command that requires them. To revert to the default behavior and run CLI commands in Docker containers, run the following command:
astro config set container.binary docker
If you need to switch back to using Podman again, run the following command:
astro config set container.binary podman