Skip to main content

Using the DOCKER_HOST environment variable

Consider using the DOCKER_HOST environment variable to migrate transparently from Docker to Podman Desktop on all platforms.

  • Continue using familiar Docker commands.
  • Take advantage of the benefits of Podman.
  • Your tools, such as Gradle or Testcontainers, communicate with Podman without reconfiguration.

Prerequisites

  • Podman

Procedure

  1. Identify the location of your Podman pipe
$ podman machine inspect --format '{{.ConnectionInfo.PodmanPipe.Path}}'
  1. Set the DOCKER_HOST environment variable to your Podman pipe location. You'll need to replace back slashes with forward slashes and add the npipe:// scheme to the path retrieved previously:

Example:

prefixpodman-pipe

npipe:////./pipe/podman-machine-default

Depending on your terminal emulator of preference there is a little variation between the commands to set a session level environment variable:

cmd - Command Prompt
set DOCKER_HOST=npipe://<inspect_command_output>
Git Bash
export DOCKER_HOST=npipe://<inspect_command_output>
Powershell

Don't miss the quotes on the value or powershell will try to interpret it as a separate command instead of a value.

$env:DOCKER_HOST="npipe://<inspect_command_output>"

Ideally you should set DOCKER_HOST at the system or user level environment variables (or even load it in your CL emulator init script of choice)

Note: Setting the DOCKER_HOST environment variable isn't necessary on Windows since Podman also listens to the default docker_engine pipe. But it may be necessary if you get the following error: Error: socket of machine is not set while trying to use the podman compose command.

Verification

  • Your tools using the DOCKER_HOST environment variable, such as Gradle or Testcontainers, communicate with Podman without reconfiguration.