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
- Windows
- macOS
- Linux
- Identify the location of your Podman pipe
$ podman machine inspect --format '{{.ConnectionInfo.PodmanPipe.Path}}'
- Set the
DOCKER_HOST
environment variable to your Podman pipe location. You'll need to replace back slashes with forward slashes and add thenpipe://
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.
- Identify the location of your Podman socket
$ podman machine inspect --format '{{.ConnectionInfo.PodmanSocket.Path}}'
- Set the
DOCKER_HOST
environment variable to your Podman socket location. Be sure to add theunix://
scheme to the path retrieved previously:
$ export DOCKER_HOST=unix://<your_podman_socket_location>
- Identify the location of your Podman socket
$ podman info --format '{{.Host.RemoteSocket.Path}}'
- Set the
DOCKER_HOST
environment variable to your Podman socket location. Be sure to add theunix://
scheme to the path retrieved previously:
$ export DOCKER_HOST=unix://<your_podman_socket_location>
Verification
- Your tools using the
DOCKER_HOST
environment variable, such as Gradle or Testcontainers, communicate with Podman without reconfiguration.