Docker connection settings
File | Settings | Build, Execution & Deployment | Docker for Windows and Linux
PyCharm | Settings | Build, Execution & Deployment | Docker for macOS
CtrlAlt0S
Specify the settings for accessing the Docker Engine API from PyCharm. For more information about using the Docker integration with PyCharm, refer to Docker.
This functionality relies on the Docker plugin, which is bundled and enabled in PyCharm by default. If the relevant features are not available, make sure that you did not disable the plugin.
note
The Docker plugin is available by default only in PyCharm Professional. For PyCharm Community Edition, you need to install the Docker plugin as described in Install plugins.
Press CtrlAlt0S to open settings and then select Plugins.
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:
- Docker
Add a new Docker configuration.
- Delete AltDelete
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 likeunix:///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 attcp://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.
note
Since the Certificates folder field specifies any folder with certificates, this field corresponds to the
DOCKER_CERT_PATH
environment variable. For more information, refer to Client modes in the Docker documentation.- SSH
Connect to a remote Docker daemon via an existing SSH configuration or create a new one.
- 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
(withhttps
as the protocol instead oftcp
)Certificates folder: the value of
DOCKER_CERT_PATH
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.
- Add AltInsert
Add a new mapping.
- Remove Ctrl0Y
Remove the selected mapping.
- 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
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
For more information about volumes and bind mounts, refer to Manage data in Docker.
Thanks for your feedback!