# Использование Docker

Смотреть видеоурок

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

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

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

- Docker is supported in Plesk for the following operating systems: CentOS 7, RedHat 7, Debian 8, Debian 9, Ubuntu 14.04, Ubuntu 16.04, and Ubuntu 18.04.

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

- Вы не можете использовать Docker в Plesk, установленном на Windows Server 2008.

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

- Чтобы удаленно воспользоваться службой Docker в Plesk, вам необходима дополнительная лицензия. Ее можно купить отдельно или как часть комплекта Hosting Pack.

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

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

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

## Как начать использовать Docker

Установите расширение Docker в Plesk.

Чтобы начать использование, нажмите Docker в левой панели навигации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

Примечание

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

Примечание

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

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

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

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

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

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

Предупреждение

Если настроено преобразование портов, Docker связывается с указанным портом на всех сетевых интерфейсах основной системы. Обычно это означает, что к приложению есть доступ отовсюду. Docker подразумевает, что аутентификация выполняется самим приложением, но иногда это не так (например, MySQL по умолчанию запрещает анонимный доступ, а Redis разрешает).

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

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

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

For more information about data in containers, refer to the Docker documentation.

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

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

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

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

Переменные окружения используются приложением внутри контейнера. Вам может понадобиться добавить новые переменные или изменить существующие. В 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, оставьте галочку Активировать.

Ссылка на Docker появится в левой панели навигации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Требования

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

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

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

- 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, подключенные по правилам проксификации к сайту, не учитываются при подсчете расхода дискового пространства подпиской. Исключением может быть случай, когда директория сайта подключена к контейнеру как том, так как в этой ситуации все файлы, расположенные в контейнере, будут приниматься во внимание при подсчете расхода дискового пространства сайтом.