Docker provides a robust platform for deploying and managing applications within isolated containers. This powerful containerization technology allows you to utilize specific software, such as Redis or MongoDB, or particular software versions, even if they are not natively supported by your operating system or require complex compilation processes.
Within the Plesk environment, Docker is readily accessible as an extension. This integration empowers you to efficiently run and manage containers derived from various Docker images, leveraging Docker's capabilities on both your local host and across remote servers.
This comprehensive guide will walk you through the process of creating, configuring, and managing Docker containers directly within Plesk. Furthermore, you will discover how to effectively control remote Docker hosts from your Plesk interface, extending your container management capabilities.
Requirements and Limitations
Warning: The Docker extension downloads images from Docker Hub as they are and does not preconfigure them in any way. Some Docker containers or software within them are intended for trusted environments only and may require additional security setup. Before launching these downloaded images in Plesk, it is crucial to enhance their security yourself. For specific instructions, refer to the documentation provided by the container or software vendor. For example, see the security section in the Redis documentation.
- Docker is fully supported in Plesk for the following operating systems: CentOS 7, Red Hat Enterprise Linux 7, Debian 10, Debian 11, Debian 12, Ubuntu 18.04, Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04, AlmaLinux 8.x, AlmaLinux 9.x, Rocky Linux 8.x, and Virtuozzo 7 with Update 1 Hotfix 1 (7.0.1-686) or later versions.
- For Plesk on Windows, it is possible to use Docker installed on a remote machine. Please refer to the Using Remote Docker section later in this document for detailed instructions.
- It is not possible to use Docker within a Plesk instance that is itself deployed inside a Docker container.
- To utilize remote Docker services within Plesk, an additional license is required. This license can be purchased either separately or as part of a bundle such as the Hosting Pack, Power Pack, or Developer Pack.
- Docker exclusively operates on x64 systems.
- Docker containers managed within Plesk cannot be directly migrated or backed up. However, you can back up the data utilized by these containers (refer to Volume Mapping below) or download snapshots for preservation.
- Virtuozzo 7 with Update 1 Hotfix 1 (7.0.1-686) or later is supported. It's important to note that with this update, new containers based on CentOS 7 are created with the firewall enabled by default, a change implemented by Virtuozzo to enhance security. Plesk administrators must manually configure the firewall to ensure that all necessary ports for Plesk operations are open.
Prerequisites
Before you can begin leveraging Docker's capabilities, the Docker extension must be properly installed on your Plesk server:
- If you are the Plesk administrator, you can easily install the extension directly from the Extensions Catalog.
- Otherwise, please reach out to your hosting provider and request them to install the extension for you.
Once the extension is successfully installed, you are ready to proceed. The "Docker" option will then become visible and accessible in the Navigation Pane.

Containers
You can effortlessly access a wide array of images from Docker Hub within the Run Container catalog, accessible via Docker > Containers > Run Container.
To access this comprehensive catalog:
- If you have not previously installed any containers, navigate to Docker > Containers and click Run Container.
- If you have previously installed containers, go to Docker > Containers and click the plus icon
.
To efficiently locate available images, utilize the search box functionality.

You can specify the image name, the repository, or both to refine your search results.
The following repositories are available for your search:
- Local repository - This repository contains images that are already present on your server, having been previously downloaded and stored locally with Docker. For more detailed information, please refer to the Managing Local Images section further in this document.
- Docker Hub - The official registry for Docker images.
Multiple versions may be available for each application. You can easily run a specific version by selecting the appropriate tag from the available options, as illustrated below:

To run a container:
- Navigate to Docker > Containers > Run Container.
- Utilize the search box to find desired images within the catalog. If an image is stored locally, (local) will be displayed after its version.
- To view the image description and comprehensive documentation on Docker Hub, click the more info icon
. This functionality is not applicable to local images. - Click on the desired image card.
- To run a specific version, select the preferred image version from the Image version drop-down menu and then click Next.
- To run the latest available version of the selected application, simply click Next.
Plesk will proceed to create a container and then prompt you to define its settings, such as environment variables. After this, it will initiate the container's execution. You have the option to cancel the process by clicking Cancel on the Settings screen. For a detailed explanation of these settings, please refer to the Container Settings section later on this page.
- Once you have adjusted the settings to your requirements, click Run. The newly created container will then appear in the list of containers on the Containers tab.

Review the Console Log to ascertain if the container is running without any issues.
Container Settings
Note: If you wish to modify container settings, it is not necessary to stop the container first. When you save new settings, Plesk automatically recreates the container to apply those changes.
To effectively edit container settings, navigate to the Containers tab and click the settings icon
adjacent to the container you intend to modify.

Limiting Memory
By default, a Docker container's RAM usage is unrestricted. To enforce a memory limit, select the Memory limit checkbox and input the desired limit value in megabytes within the MB field.
Note: Currently, CPU and Disk usage cannot be limited for Docker containers.
Note: Docker containers are considered administrator-level objects and are therefore not governed by subscription-level cgroup limits (which typically apply to CPU, RAM, and Disk usage).
Automatic Start
If the option Automatic start after system reboot is not selected, then any websites utilizing this container might experience downtime after a system reboot. In such cases, you would need to manually start the container.
Port Mapping
By default, Automatic port mapping is enabled, which maps the container’s internal port to a randomly assigned port on the host system (e.g., 32768).
To specify a different port on the host system, deselect Automatic port mapping and then enter an alternative external port in the Manual mapping field. If Manual mapping does not appear after deselecting the automatic option, it indicates that the container does not expose any ports.
When employing manual mapping, Docker, by default, binds only to the specified port on the host system’s localhost interface (127.0.0.1). This configuration ensures the port is inaccessible from the Internet, safeguarding the application inside the container from external attacks. To enable Docker to bind to the specified port across all network interfaces of the host system, deselect Make the port inaccessible from the Internet. Be aware that doing so will make the application inside the container accessible from the Internet via the specified port on any of the host system’s IP addresses.
Warning: Docker assumes that authentication is handled by the application itself. However, this is not always the case (for example, MySQL/MariaDB typically disallows anonymous access by default, whereas Redis does). Making an application inside a container accessible from the Internet without proper internal authentication mechanisms could expose it to malicious attacks.
Volume Mapping
Docker volumes are essentially directories on your server that are mounted to a Docker container. This mechanism provides persistent storage that can be accessed from your host system. Crucially, the data stored in Docker volumes remains intact even when you stop or delete a container.
Warning: Data stored within Docker volumes will not be included in Plesk backups. To prevent any potential data loss, it is highly recommended to back up any essential data residing in a volume using a third-party backup tool.
For more comprehensive information regarding data management in containers, please consult the official Docker documentation.
To establish a volume mapping, specify the following details:
- In the Host field, provide the absolute path to the directory on the server that you intend to mount within the container.
- In the Container field, provide the absolute path to a directory inside the container.
To map additional directories, simply click Add one more.
Setting Environment Variables
Environment variables are utilized by the application running within a container. You may find it necessary to add new variables or modify existing ones to suit your application's requirements. Plesk allows you to add as many environment variables as needed.
Operations with Containers
Plesk provides a comprehensive set of operations for managing your Docker containers:
- You can easily stop (Stop), start (Start), or restart (Restart) a container. In each of these scenarios, the container will be recreated with its current configuration settings.
Note: If you have not saved data to mounted volumes (refer to the Volume Mapping section above), any unsaved data will be lost during these operations.
- Click the arrow
next to the container to view its logs and monitor resource consumption. - Click the settings icon
next to the container to modify its settings, such as environment variables or volume mapping (via Settings). - Rename a container by accessing its settings (Settings > Container name).
Click the more options icon
next to the container to perform one or more of the following actions:
- Recreate a container, either using the same image version or selecting an alternative version from the catalog (Recreate).
- Create a new image based on a container that includes your custom settings (Save as Image).
- Generate and download a snapshot of a container's current state (Download Snapshot).
- Permanently remove a container (Remove).
Recreating a Container
Typically, recreating a container becomes necessary when you intend to update the application running within it to a newer version. It's important to note that you have the flexibility to rebuild a container using any application version available in the catalog, not exclusively newer ones.
During the recreation process, all custom settings are diligently preserved. To ensure the persistence of data utilized by the application inside a container, you must configure volume mapping prior to recreating the container. Volume mapping grants you access to directories used within a container, thereby safeguarding your data (refer to Volume Mapping in container settings for more details).
To recreate a container:
- Navigate to Docker and click the more options icon
next to the specific container you wish to recreate. - Click Recreate within the container settings, then specify the desired image version and indicate whether to use default environment variables.
Using Remote Docker
By default, Plesk integrates and utilizes Docker as a local service on the Plesk server itself. However, you have the option to incorporate and manage one or more Docker services installed externally to Plesk. It's important to remember that only one Docker service can be actively used at any given time. The currently active server is clearly indicated in the Environments tab of the Docker settings page within Plesk.
Note: Managing remote Docker services necessitates a specific Plesk license key add-on. Without this add-on, your capabilities will be limited to managing only the local Docker service running directly on the Plesk server.
Configuring Remote Services
To enable a remote server running Docker for use as a remote server in Plesk, you must configure it as described in the official Docker documentation, particularly concerning secure communication.
Managing Remote Services
Plesk facilitates the establishment of a secure connection between a Plesk server, equipped with the Docker extension, and a remote node hosting the Docker service.
The following steps are applicable for configuring both Plesk for Linux and Plesk for Windows environments.
These steps must be diligently performed on the remote host:
- Create the
/etc/docker/daemon.jsonconfiguration file for Docker with the following content:1 2 3 4 5 6 7 8{ "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"], "tls": true, "tlsverify": true, "tlscacert": "/root/ca.pem", "tlscert": "/root/server-cert.pem", "tlskey": "/root/server-key.pem" } - Prepare the necessary
.pemfiles for secure communication. You can utilize the following example. Remember to replace the IP address on line 4 with the actual IP address of your remote node, then execute each command sequentially:1 2 3 4 5 6 7 8 9 10openssl genrsa -aes256 -out ca-key.pem 4096 openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem openssl genrsa -out server-key.pem 4096 openssl req -subj "/CN=192.0.2.1" -new -key server-key.pem -out server.csr openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem openssl genrsa -out key.pem 4096 openssl req -subj '/CN=client' -new -key key.pem -out client.csr openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem chmod 0400 ca-key.pem server-key.pem key.pem chmod 0444 ca.pem server-cert.pem cert.pem - Execute the following commands to modify the current Docker service, ensuring it starts automatically after host configuration:
1 2 3 4cp /lib/systemd/system/docker.service /etc/systemd/system/ sed -i 's/\\ -H\\ fd:\\/\\///g' /etc/systemd/system/docker.service systemctl daemon-reload systemctl restart docker - Save the outputs of the following files onto your local machine. These files contain the necessary client credentials for establishing a remote connection:
1 2 3cat key.pem cat cert.pem cat ca.pem
On the local Plesk server, configure the Docker remote host:
- Navigate to Docker > Environments.
- Click Add Server
and accurately specify the settings for the remote server hosting the Docker service. - To immediately begin using this Docker service within Plesk, ensure that Set active remains selected.
.
A link to the configured Docker service will then appear in the Navigation Pane for easy access.
To switch between different Docker services:
- Go to Docker > Environments.
- From the list of available servers, select the specific Docker node you intend to use and click Set Active.
Alternatively, you can also set a Docker node as active while in the process of editing its settings.
.
Creating Images with Custom Settings
If you wish to generate a new Docker image incorporating modifications you've made to an existing container, utilize the Save as Image command. This action effectively creates a snapshot of your container, which subsequently appears as a new image in your image catalog. This functionality is particularly useful for creating customized images with specific configurations, such as pre-defined environment variables.
To create an image from one of your containers:
Navigate to Docker > Containers, click the more options icon
next to the desired container, and then click Save as Image. In the Save as Image side panel, you will need to specify:
- The desired Image name.
- An optional Tag, which can be used to denote the image version. By default, if no tag is specified, the version will be "latest".
The newly created image will then be visible in the Images tab and will be clearly marked as a Local image.
Managing Local Images
Local images are Docker images that are stored persistently on your local disk, eliminating the need to download them repeatedly from the Image Catalog. This optimizes performance and reduces bandwidth usage.
An image becomes designated as local under several circumstances:
- When you select any version (tag) of an image and the download process begins. Whether you subsequently run a container or cancel the execution (on the Settings screen), the image is saved locally.
- When you manually upload an image to Docker within Plesk via the Upload image option in the Docker Images tab.
- When you create a custom image directly from an existing container (refer to Creating Images with Custom Settings for detailed steps).
- When you build an image using the command-line interface.
To download an alternative version of an image from the online catalog, click the Pull icon
, select the desired version from the drop-down menu, and then click Pull.
If Docker possesses at least one downloaded version from a group of versions belonging to a specific image, this image will be prominently marked as a Local image in the catalog. Plesk also provides a clear indication of how many local images exist for a particular product.
.
To effectively view and remove outdated local images:
- Navigate to Docker > Images.
- To locate a specific local image, utilize the Search bar functionality.
- To display all local images associated with a particular product, click the link situated beneath the product name. This action will reveal all local images' tags and the disk space they currently occupy.
.
Setting up nginx to Proxy Requests from Domains to a Container
Many Docker containers are designed to expose specific ports, making the applications running within them accessible via those ports. While this is functional, directly specifying a non-standard port in a website's URL can be inconvenient for users.
To enhance user experience and simplify access, you can configure nginx to proxy requests from your domains to these exposed container ports. This allows your domains to utilize standard web ports (such as 80 or 443) without the need to explicitly include the port number in the URL.
Requirements
- nginx must be actively running within your Plesk environment.
- You must manually map the port inside a container to a specific port on the host system (for example, 32768).
To map the port inside a container:
- Navigate to Docker > Containers and click the settings icon
adjacent to the container you wish to configure. - Deactivate Automatic port mapping.
- Manually map the port residing inside the container to a designated port on your host system (for example, 32768). You have the option to make this specific port inaccessible from the Internet for enhanced security.
Once the port is mapped, you can set up nginx to proxy requests from your domains to that specific host port. This allows your domains to operate on a standard nginx port (e.g., 80 or 443). To enable this functionality, you need to add a proxy rule for nginx within your domain settings.
To add a rule for nginx in the domain settings:
Go to Websites & Domains > [select the domain] > Docker Proxy Rules > Add Rule and specify the following parameters:
- URL: Specify the URL of the website that utilizes an application running within a container. This can be either the main website or a specific section of it.
- Container: Select the application that is running as a Docker container.
- Port: Choose one of the port mappings that was previously defined in the container settings (specifically, a port inside the container mapped to a port on your system). Nginx will then proxy requests to this designated port on the host system.
.
Proxy rules are implemented by modifying the web server configuration, typically within the website’s nginx.conf file (located in /var/www/vhosts/system/$domain/conf/):
#extension docker begin
location ~ ^/.* {
proxy_pass http://0.0.0.0:9080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#extension docker end
These proxy rules are designed to function effectively on servers situated behind a Network Address Translator (NAT).
Note: Docker containers that are connected to a website via Proxy Rules are not factored into the subscription’s disk space usage. An important exception to this rule occurs when a website directory is mounted to a Docker container as a volume; in this specific case, all files located within the container will contribute to the website's reported disk space usage.
Deploying Docker Compose YAML files
Plesk offers flexible options for deploying Docker Compose YAML files. You can deploy them by utilizing the intuitive online text editor, by uploading a file directly from your local storage, or by selecting a Docker Compose file that is already stored within a website’s Home directory. Common operations on stacks are fully supported, including up (which encompasses pull and force-recreate), stop, and down. Furthermore, you retain the ability to modify and update these stacks after their initial creation.
Note: This section is specifically for Docker Compose YAML files. You cannot deploy Dockerfiles or any other auxiliary files required by an application using this interface.
To deploy a Docker Compose file:
- Navigate to Docker > Stacks > Add Stack.
- Provide a unique project name and then choose one of the available methods for deploying your Docker Compose file:
- Editor: Allows you to define or paste the content of your Compose file directly into an online editor.
- Upload: Enables you to upload a Compose file from your local storage.
- Webspace: Provides the option to select a Compose file that is already stored within a domain’s Home directory. For this method, first choose the relevant domain where the file is located, and then browse to the exact location of the Compose file.
You have the capability to declare and build custom containers within this process. Any artifacts generated during the build process will be conveniently placed inside the website’s Home directory.
For more detailed information concerning the Compose file format and its specifications, please consult the official Docker documentation.
Deploying Portainer containers in Docker
Portainer stands as a powerful container management software designed to streamline the deployment of containers and stacks, facilitate the monitoring of container status and logs, enable user and team creation, enhance environment security, and much more.
To initiate the installation of Portainer, navigate to Docker > Install Portainer. Upon successful completion of the installation, you can proceed to manage Portainer containers within Docker by going to Docker > Go to Portainer.
Note: Portainer is currently offered as a beta feature.
For extensive information and guidance on Portainer, please refer to the official Portainer documentation.
