PyCharm 2023.2 Help

Docker connection settings

Specify the settings for accessing the Docker Engine API from PyCharm. For more information about using the Docker integration with PyCharm, refer to Docker.

Enable the Docker plugin

This functionality relies on the Docker plugin, which is bundled and enabled in PyCharm by default. If the relevant features aren't available, make sure that you didn't disable the plugin.

  1. Press Control+Alt+S to open the IDE settings and then select Plugins.

  2. Open the Installed tab, find the Docker plugin, and select the checkbox next to the plugin name.

You can add multiple Docker configurations, each representing a connection to a separate Docker daemon:

the Add button Docker

Add a new Docker configuration.

the Remove button Delete Alt+Delete

Remove the selected Docker configuration.

For each Docker configuration, specify a name and choose the connection type depending on the operating system:

Docker for Windows

This is the recommended option when using Docker Desktop for Windows.

Docker for Mac

This is the recommended option when using Docker Desktop for macOS.

Unix socket

This is the recommended option when using Docker Desktop for Linux.

TCP socket

Configure the URL to the Docker Engine API manually.

In the Engine API URL field, you can specify a TCP connection to a remote Docker daemon or any Docker socket path, including a custom local socket. For example, in rootless mode, the Docker daemon runs via a systemd user service with a unique identifier, so the socket path will be something like unix:///run/user/1000/docker.sock.

By default, on macOS and Linux, the Docker daemon listens for Docker Engine API requests on the Unix socket at unix:///var/run/docker.sock.

If you are using Docker Desktop for Windows, you can connect to the Docker Engine through a named pipe at npipe:////./pipe/docker_engine or a TCP socket at tcp://localhost:2375.

You can also connect to Podman, which has an API that is equivalent to the Docker Engine API. For more information, refer to Podman.

SSH

Connect to a remote Docker daemon via an existing SSH configuration or create a new one.

WSL

Connect to a Docker daemon running in Windows Subsystem for Linux (WSL).

Minikube

If you are running minikube, select this option to automatically detect and connect to the minikube's Docker Engine environment.

If PyCharm cannot detect minikube or if it is running remotely, run the minikube docker-env command to get the necessary connection information and set the following under TCP socket:

  • Engine API URL: the value of DOCKER_HOST (with https as the protocol instead of tcp)

  • Certificates folder: the value of DOCKER_CERT_PATH

Virtual machine path mappings for Windows and macOS hosts

The Docker Engine runs natively on Linux, so you can mount directories and files from a Linux host directly to the container. A Docker host on Windows or macOS uses a lightweight virtual machine with Linux to run the Docker Engine. Use the table below the Docker connection configuration options to configure the mappings between your local file system and the virtual machine running the Docker Engine.

the Add button Add Alt+Insert

Add a new mapping.

the Remove button Remove Control+Y

Remove the selected mapping.

the Edit button Edit Enter

Edit the selected mapping.

Virtual machine path

The path to the directory in the virtual machine used for running this Docker Engine.

Local path

The path to the local folder that you want to map to the corresponding directory in the virtual machine. You will not be able to bind-mount anything outside of this folder to containers that this Docker Engine runs.

For example, let's say you keep all files that you bind-mount to Docker containers in /Users/jsmith/docker-share. You can map this directory to /dockerShare on the virtual machine for your Docker Engine connection. This Docker Engine will effectively bind-mount files to containers from /dockerShare, because that's where it can access the files that you mapped from /Users/jsmith/docker-share.

This does not affect you as a user running containers, because you still configure bind mounts and volumes as a mapping between some path on your host machine and some path inside the container. However, you can't mount anything outside of the directory that you mapped to the virtual machine.

Let's say you run a container and mount the directory with your application artifacts /Users/jsmith/docker-share/out on the host to /usr/local/tomcat/webapps in the container. In this case, the Docker Engine actually mounts /dockerShare/out, because that's where it has access to your files through virtual machine mapping.

Path mapping for virtual machine running Docker Engine

For more information about volumes and bind mounts, refer to Manage data in Docker.

Last modified: 05 September 2023