Содержание: Docker – это платформа для запуска приложений внутри контейнеров. Она позволяет вам использовать определенное программное обеспечение, например, Redis или MongoDB, или определенные его версии, которые могут не поддерживаться вашей операционной системой или требовать преобразований.

Docker is available as a Plesk extension. With it, you can run and manage containers based on specific Docker images, and to use Docker both on the local host and on remote servers.

In this topic, you will learn how to create, configure, and manage Docker containers in Plesk. You will also learn how to control remote Docker hosts from Plesk.

Требования и ограничения

Предупреждение: Расширение Docker загружает образы с Docker Hub в их первоначальном виде без какой-либо предварительной настройки. Некоторые контейнеры Docker или установленное в них программы предназначены для использования только в безопасных средах и могут требовать дополнительной настройки безопасности. Перед запуском этих загруженных образов в Plesk вам необходимо повысить их безопасность самостоятельно. Конкретные инструкции можно найти в документации производителя контейнера или программы. Например, смотрите главу о безопасности в документации Redis.

  • Docker поддерживается в Plesk для следующих операционных систем: CentOS 7, Red Hat Enterprise Linux 7, Debian 10, Debian 11, Ubuntu 18.04, Ubuntu 20.04, Ubuntu 22.04, AlmaLinux 8.x, Rocky Linux 8.x и Virtuozzo 7 с Update 1 Hotfix 1 (7.0.1-686) или новее.

    В Plesk для Windows можно использовать Docker, установленный на удаленном компьютере (смотрите далее в этом разделе **Использование удаленного Docker**).

  • Вы не можете использовать Docker в Plesk, развернутом в контейнере Docker.

  • To use remote Docker services in Plesk, you need an additional license. It can be purchased either separately or as a part of the Hosting Pack, Power Pack, or Developer Pack.

  • Docker работает только на x64 системах.

  • Контейнеры Docker в Plesk невозможно переносить на другой сервер или создавать с ними резервные копии. Однако вы можете создать резервную копию данных, используемых контейнерами (смотрите далее Определение томов), или скачать моментальные снимки.

  • Поддерживается Virtuozzo 7 с обновлением 1 исправлением 1 (7.0.1-686) или выше. Обратите внимание на то, что, начиная с этого обновления, новые контейнеры на базе CentOS 7 создаются с включенным по умолчанию брандмауэром согласно требованиям повышения безопасности Virtuozzo. Администратору Plesk необходимо вручную настроить брандмауэр таким образом, чтобы порты, необходимые для работы Plesk, были открыты.

Предварительные требования

Прежде чем вы сможете начать использовать Docker, на сервере Plesk должно быть установлено расширение Docker:

Once the extension is installed, you are ready to begin. You will see the Docker option in the Navigation Pane.

image docker menu

Каталог образов

В этом каталоге (на странице Docker > Каталог образов Docker) Plesk показывает образы с https://hub.docker.com/explore. По умолчанию показываются только рекомендуемые образы. Для просмотра других образов, воспользуйтесь системой поиска или фильтрами.

Для каждого приложения могут быть доступны несколько версий. Для запуска определенной версии выберите соответствующий тег, как показано ниже:

image docker catalog

Чтобы использовать фильтры:

  1. Нажмите стрелку image down arrow возле окна для поиска.

  2. Укажите один из вариантов или оба: имя образа и репозиторий.

    Репозитории, которые вы можете выбрать:

    • В локальном репозитории содержатся локальные образы. Это образы, которые уже были скачаны и хранятся на сервере с Docker. Подробнее смотрите в разделе Управление локальными образами далее в этом разделе.
    • Хаб Docker ― https://hub.docker.com/explore.

Чтобы запустить контейнер:

  1. Перейдите на страницу Docker > Каталог образов Docker.

  2. Воспользуйтесь системой поиска или фильтрами для быстрого поиска приложений в каталоге.

  3. Для просмотра описания приложения и документации к нему на хабе Docker, нажмите название образа. Это не применяется к локальным образам.

  4. Чтобы запустить определенную версию, нажмите стрелочку возле кнопки Запуск и выберите версию приложения.

  5. Чтобы запустить последнюю версию выбранного приложения, нажмите Запуск.

    Если образ хранится локально, на кнопке написано: Запустить (локальный).

    Plesk создает контейнер и предлагает вам указать его настройки, такие как переменные окружения, а затем запускает его. Вы можете отменить запуск, нажав Отмена на экране Настройки. Подробнее о настройках смотрите в разделе Настройки контейнера далее на этой странице.

  6. Контейнер появится в списке контейнеров в верхней части страницы Каталог Docker.

    image docker container running

Проверьте журнал (Журналы), чтобы узнать, какие настройки необходимы для правильной работы контейнера.

Настройки контейнера

Примечание: Чтобы изменить настройки контейнера, не обязательно его останавливать: при сохранении новых настроек Plesk заново создаст контейнер.

Чтобы изменить настройки контейнера, перейдите на страницу Настройки или Подробности > Настройки.

image container settings

Ограничение памяти

По умолчанию использование памяти в контейнере Docker не ограничено. Чтобы ограничить использование памяти, уберите галочку Без ограничений и введите значение ограничения в мегабайтах в поле Ограничение памяти.

Примечание: В настоящее время для контейнеров Docker не может быть ограничено использование процессора и диска.

Примечание: Контейнеры Docker являются объектами, доступными на уровне администратора, и для них не применяются ограничения ресурсов (процессора, памяти, использования диска), заданные с помощью Cgroups Manager на уровне подписки.

Автоматический запуск

Если не включена опция Автоматический запуск после перезагрузки системы, то после перезагрузки системы сайты, использующие этот контейнер, могут не работать, и вам придется запустить контейнер вручную.

Преобразование портов

По умолчанию опция Автоматическое преобразование портов включена и внутренний порт контейнера преобразовывается в случайный порт основной системы (например, 32768).

Чтобы изменить порт основной системы, уберите галочку Автоматическое преобразование портов и укажите другой внешний порт в поле Преобразование вручную. Если поле Преобразование вручную не появляется, когда вы убрали галочку, это означает, что у контейнера нет открытых портов.

When using manual mapping, by default Docker only binds to the specified port on the host system’s localhost interface (127.0.0.1). This way, the port is inaccessible from the Internet, and the application inside the container is safe from attacks. To have Docker bind to the specified port on all network interfaces of the host system, clear the «a private port on the host» checkbox. If you do, the application inside the container becomes accessible from the Internet, and can be reached on the specified port via any of the host system’s IP addresses.

Предупреждение: Docker presumes that authentication is carried out by the application itself, but sometimes it is not so (for example, MySQL/MariaDB does not allow anonymous access by default, but redis does). Making the application inside a container accessible from the Internet may result in the application being attacked by a malicious actor.

Определение томов

Томы Docker представляют собой папки на вашем сервере, подключенные к контейнеру Docker, так что у вас получается постоянное хранилище с доступом из вашей основной системы. Данные, хранящиеся в томах Docker, можно сохранить в виде резервной копии, а также, что еще важнее, они не удаляются при остановке или удалении контейнера.

Подробнее о данных в контейнерах читайте в документации к Docker.

Чтобы добавить определение тома, укажите следующее:

  • В первом поле (слева) ― путь к папке на сервере, которую вы хотите подключить к контейнеру.
  • Во втором поле (справа), помеченном как Источник, ― путь к папке внутри контейнера.

Чтобы подключить еще папки, нажмите Добавить определение.

Настройка переменных окружения

Переменные окружения используются приложением внутри контейнера. Вам может понадобиться добавить новые переменные или изменить существующие. В Plesk вы можете добавлять столько переменных, сколько нужно.

Операции с контейнерами

Вы можете сделать с контейнерами следующее:

  • Перезапустить (Перезапустить) или остановить (Остановить) контейнер. В этих случаях контейнер будет пересоздан с текущими настройками.

    Примечание: Если данные не были сохранены в подключенных томах (смотрите далее раздел Определение томов), они будут утеряны.

  • Просмотреть журналы и потребление ресурсов (Подробности).

  • Изменить настройки контейнера, например, переменные среды или определение томов (Настройки или Подробности > Настройки).

    В Plesk на CentOS можно установить ограничение на объем памяти для контейнера (Настройки > Ограничение памяти).

  • Переименовать контейнер (Настройки > Имя контейнера).

  • Пересоздать контейнер, используя ту же самую или другую версию образа (Подробности > Заново создать).

  • Создать образ на основе контейнера с вашими персональными настройками (Подробности > Сохранить как образ).

  • Сделать моментальный снимок контейнера (Подробности > Скачать копию).

  • Удалить контейнер (Удалить или Подробности > Удалить).

Повторное создание контейнера

Обычно бывает нужно пересоздать контейнер, когда вы хотите обновить приложение до более новой версии. Вообще, вы можете пересоздать контейнер, используя любую версию приложения, имеющуюся в каталоге, не только более новую.

Персональные настройки сохраняются во время пересоздания. Чтобы сохранить данные, используемые приложением внутри контейнера, вам нужно определить тома до пересоздания контейнера. Определение томов позволяет вам иметь доступ к папкам, использующимся внутри контейнера (смотрите Определение томов в настройках контейнера).

Чтобы заново создать контейнер:

  1. Перейдите на страницу Docker и нажмите Подробности под тем контейнером, который хотите пересоздать.
  2. Нажмите Заново создать в настройках контейнера и укажите версию образа, и использовать ли переменные окружения по умолчанию.

Использование удаленного Docker

По умолчанию Plesk использует Docker, установленный как компонент Plesk. Однако вы можете использовать один или несколько сервисов Docker, установленных не в Plesk. Обратите внимание на то, что одновременно можно использовать не более одного сервиса. Имя хоста выбранного сервера показывается в заголовке каталога Docker в Plesk.

Примечание: Для управления удаленной службой Docker вам потребуется дополнение к лицензии Plesk. Без этого дополнения вы сможете управлять только локальной службой Docker, работающей на сервере Plesk.

Настройка удаленного сервиса

Настройте удаленный сервер с Docker, как описано в документации Docker, чтобы его можно было использовать как удаленный сервер в Plesk.

Управление удаленным сервисом

Следующие шаги применимы и к Plesk для Linux, и к Plesk для Windows.

Чтобы начать использование Docker, работающего на удаленном сервере:

  1. Перейдите на страницу Инструменты и настройки > Docker (в разделе Управление сервером)
  2. Нажмите Добавить сервер и укажите настройки удаленного сервера с Docker.
  3. Чтобы начать использовать этот сервис Docker в Plesk, оставьте галочку Активировать.

The link to Docker will appear in the Navigation Pane.

Чтобы переключиться между сервисами Docker:

  1. Перейдите на страницу Инструменты и настройки > Docker (в разделе Управление сервером)
  2. В списке серверов выберите тот, который хотите использовать, и нажмите Активировать.

Или вы можете активировать сервер при редактировании его настроек.

image remote docker hosts

Создание образов с персональными настройками

Если вы хотите создать новый образ на основе изменений контейнера, используйте команду Сохранить как образ. Она создаст моментальный снимок вашего контейнера, который появится как новый образ в каталоге образов. Таким образом можно создавать образы с персональными настройками, такими как переменные окружения.

Чтобы создать образ на основе одного из ваших контейнеров:

Перейдите на страницу Docker > Подробности под названием контейнера > Сохранить как образ, и по желанию укажите:

  • Имя образа. По умолчанию для образа будет создан код и использован в качестве названия.
  • Тег. Здесь можно указать версию образа. По умолчанию версия будет «последняя».

Созданный образ появится в каталоге образов с пометкой Локальный образ.

Управление локальными образами

Локальные образы ― это образы, сохраненные Docker на локальном диске, так что их не нужно скачивать из Каталога образов.

Образ становится локальным в следующих случаях:

  • Вы выбрали любую версию (тег) образа, и образ начал скачиваться. Если вы затем запускаете контейнер или отменяете запуск (на экране Настройки), образ сохраняется локально.
  • Вы загрузили образ в каталог Docker в Plesk (Загрузить образ в Каталоге образов Docker).
  • Вы создали собственный образ из контейнера (смотрите Создание образов с персональными настройками).
  • Вы создали образ через интерфейс командной строки.

Если в Docker есть хотя бы одна скачанная версия из группы версий, относящихся к образу, этот образ помечается в каталоге как Локальный образ. Запустить (локальный) означает, что уже скачана самая последняя версия. Plesk также показывает, сколько всего локальных образов существует для продукта.

image docker local images

Чтобы просмотреть локальные образы и удалить устаревшие локальные образы:

  1. Перейдите на страницу Docker > Каталог образов Docker.

  2. Чтобы найти все локальные образы, нажмите на стрелочку возле поля для поиска и выберите Локальный в фильтре Репозиторий.

  3. Чтобы просмотреть все локальные образы определенного продукта, нажмите ссылку под названием продукта. Будут показаны все теги локальных образов и занимаемое пространство на диске.

    image remove outdated images

  4. Чтобы удалить все образы, нажмите Очистить все образы.

  5. Чтобы удалить определенный образ, нажмите иконку Удалить image red cross рядом с удаляемым образом.

Настройка nginx для проксирования запросов от доменов к контейнеру

Некоторые контейнеры Docker открывают порты, чтобы приложения в контейнерах были доступны по этим портам.

При использовании приложения из контейнера Docker на вашем сайте вам может показаться неудобным указывать нестандартный порт в URL. Чтобы избежать этого, вы можете настроить nginx на проксирование запросов от доменов к этому порту, тогда домены смогут использовать стандартный порт (например, 80) и не придется явно указывать порт в URL.

Требования

  • В Plesk должен работать nginx.
  • Вам необходимо вручную настроить переадресацию с порта внутри контейнера на порт в основной системе (например, 32768) (Docker > выбрать контейнер > Настройки > уберите галочку Автоматическое преобразование портов).

После того, как вы вручную настроили переадресацию с порта внутри контейнера на порт в основной системе (например, 32768), вы можете настроить nginx проксировать запросы от доменов к этому порту, тогда домены смогут использовать стандартный порт на nginx (например, 80). Для этого добавьте правило для nginx в настройках домена следующим образом:

Перейдите на страницу Сайты и домены > домен > Правила проксификации Docker > Добавить правило и укажите следующее:

  • URL компании. Укажите URL сайта, использующего приложение, работающее в контейнере. Это может быть как основной сайт, так и его часть.
  • Контейнер. Выберите приложение, работающее как контейнер Docker.
  • Порт. Выберите одно из соответствий, указанных в настройках контейнера (между портом внутри контейнера и портом вашей системы). Nginx будет проксировать запросы на порт системы.

Правила проксификации задаются в конфигурации веб-сервера, например, в файле  nginx.conf  сайта (в /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

Правила проксификации должны успешно работать на серверах под управлением NAT.

Примечание: Контейнеры Docker, подключенные по правилам проксификации к сайту, не учитываются при подсчете расхода дискового пространства подпиской. Исключением может быть случай, когда директория сайта подключена к контейнеру как том, так как в этой ситуации все файлы, расположенные в контейнере, будут приниматься во внимание при подсчете расхода дискового пространства сайтом.