Подтвердить что ты не робот

Переход виртуальных хостов в докерные контейнеры

В настоящее время я запускаю сервер Red Hat Linux с Plesk для размещения сотен доменов. По нескольким причинам я хотел бы перейти от Plesk и к контейнерам Docker с каждым виртуальным хостом в виде одного или нескольких контейнеров. Я не знаю, что я читал до сих пор, что было бы лучшим подходом к этому.

Типичный сайт включает область корневого файла doc и одну или две базы данных MySQL. Мы запускаем PHP на всех сайтах. Некоторые сайты могут иметь ограничения на версию PHP, которую они могут запускать. На некоторых сайтах используется SSL. Я не верю, что существуют ограничения на версии MySQL, но, конечно же, возможно, что будущие версии MySQL могут испортить некоторые функции, которые необходимы. Я не верю, что есть какая-либо зависимость от версии Apache, но я полагаюсь на некоторые определенные модули Apache, которые устанавливаются. Может быть сайт или два, у которых есть зависимости вне корня doc, а не часть базовой установки виртуального хоста, но я не считаю, что для какой-либо конкретной версии Linux требуется.

Я хотел бы, чтобы контейнеры имели максимальную переносимость, чтобы я мог иметь гибкость при перемещении сайтов на любой сервер или облачный сервис, который я выбираю. Часть моей цели - уйти в отставку с текущего сервера и переместить сайты на серверы, которые лучше всего подходят им.

Я также хотел бы попробовать обновить версию PHP после создания контейнеров.

Итак, будет ли один контейнер включать всю корневую файловую систему doc, включая каталоги данных, в которых пользователи могут загружать /ftp файлы? Будет ли он включать базу данных MySQL, или это будет отдельно? Я предполагаю, что буду включать текущую версию PHP, чтобы я мог обновлять каждую, когда был готов. Включит ли он Apache, когда требуются определенные модули Apache? Есть ли причина включать Apache и/или MySQL во все контейнеры?

Один последний кусок. Я изучаю использование CoreOS, который использует Docker как неотъемлемую часть.

Приветствуются все и все входы.

4b9b3361

Ответ 1

Вся идея Docker заключается в том, что выполняются изолированные процессы/компоненты, чтобы они легко обновлялись. Я возился с этим в прошлом и придумал следующее.

  • Создайте четыре контейнера на экземпляр (клиент):
    • Apache или nginx
    • PHP-FPM
    • MySQL
    • Busybox (как контейнер данных)
  • Свяжите все вместе и установите тома для всех данных, которые должны сохраняться в контейнере данных. Например, данные MySQL и /var/www плюс файлы конфигурации сайта.

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

Update:

Новые версии Docker поставляются с инструментом docker-compose, который значительно облегчает эту задачу.

Ответ 2

Я пытаюсь решить те же проблемы с cPanel вместо Plesk.

Мы можем попытаться выполнить это, используя плагины для cpanel или plesk, однако нам нужно беспокоиться о нескольких вещах.

и мы должны создать некоторые готовые изображения шаблонов для контейнеров, которые могут использовать наши клиенты.. это не может быть просто какой-либо контейнер из dockerhub, пользовательских Dockerfiles и т.д. Поскольку cPanel/Plesk будет искать определенные файлы журналов, доступные в определенных местах для bw расчеты, дисковая квота и т.д.

Самое большое преимущество этого решения заключается в том, что мы можем обеспечить изоляцию CloudLinux и простое распределение ресурсов/справедливое распределение. Однако это не так просто.

Чтобы ответить на ваш вопрос:

Каждый контейнер будет почти полной системой, поэтому вам нужно будет иметь меньше клиентов на хост, потому что каждый контейнер может быть как 1G и по умолчанию должен запускать собственный веб-сервер/php и, следовательно, больше печатать отпечаток лапа.

Тяжело запускать Mysql внутри каждого контейнера, и лучше использовать mysql на хосте или 1 выделенный контейнер и поделиться им. таким образом помогут инструменты Plesk.

Вам также может потребоваться использовать стандартный apache, а затем обратный прокси-сервер для каждого контейнера после завершения ssl, поэтому используются стандартные инструменты Plesk, но затем я думаю, что контейнерам придется запускать собственный веб-сервер или нам, возможно, придется сделать некоторые обманы с php-fpm, чтобы хост-сервер Apache мог взаимодействовать с каждым процессом php-fpm каждого контейнера. Это более болезненно, чем позволить каждому контейнеру просто запускать собственный Nginx, но это возможно.

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

Этот материал легко для кого-то из cPanel или Plesk, чтобы сделать.., но для других ему потребуется много времени на разработку + тестирование, чтобы убедиться, что все это работает.

Я собирался потратить некоторое время на создание такого рода плагинов для cPanel, но все же undediced. Я могу попробовать это, если я могу привязать некоторых инвесторов.

Вы можете увидеть сумму процентов, CPanel показывает по этой проблеме: http://features.cpanel.net/responses/dockerio-support

Я оставлю вас решить

Также как альтернативное решение:

Итак, вместо того, чтобы играть в настройку Cpanel, я создал это. https://github.com/paimpozhil/WhatPanel Здесь каждый сайт запускается в своем собственном контейнере (и при необходимости его собственной VM).

Миграция проста: экспортирует/импортирует контейнер с такими инструментами, как: на github.com/paimpozhil/docker-volume-backup и acaranta/docker-backuper

Я не завершал инструменты обновления migrator/php и т.д., но буду делать, когда у меня будет свободное время.