Docker запрос на контейнеризацию - PullRequest
0 голосов
/ 05 сентября 2018

Наше требование - создать контейнер для устаревших приложений через Docker.

У нас нет поддержки операционной системы / сервера приложений, и у нас нет знаний для их создания с нуля.

Но у нас есть физический экземпляр устаревшего приложения, работающего на нашей ферме.

Мы могли бы получить ISO-образ от нашей серверной команды, если требуется, наш вопрос: можем ли мы получить этот ISO-образ, мы можем экспортировать его как образ докера?

если да, пожалуйста, дайте мне знать, если есть какие-либо конкретные процедуры или шаги, связанные с этим.

если нет, скажите, пожалуйста, почему? и возможные обходные пути для того же.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

если мы получим этот образ ISO, можем ли мы экспортировать его как образ докера?

Я не думаю, что есть простой способ (как кнопка экспорта) сделать это. Объяснение следует ...

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

Контейнеры не являются виртуальными машинами. Они «содержат» все байты, необходимые службе для запуска, но не всю операционную систему. Предполагается, что они выполняются как процессы на хосте.


Обходные:

Вы должны запачкать руки. Это означает, что вам придется выяснить, что использует устаревшее приложение (например, Apache + PHP + MySql + код приложения), и собрать его с нуля с помощью Docker.


Некоторые мысли:

  • контейнеры должны быть легкими. Например, можно использовать один контейнер для базы данных, другой - для Apache и т. Д. Ваш случай выглядит так, как будто вы двигаетесь к толстому контейнеру, в котором есть все.
  • В зависимости от того, что является унаследованной технологией, вы можете столкнуться со стеной ... Например, если мы говорим о чем-то, работающем со старым php, mysql вы можете найти готовые изображения в hub.docker .com . Но если старое приложение - это финансовая система, написанная на коболе, я не знаю, какой может быть ваша отправная точка ...
0 голосов
/ 05 сентября 2018

Вам нужно будет выполнить обратное проектирование зависимостей приложения от артефактов, к которым у вас есть доступ. Это означает восстановление зависимых от языка зависимостей (будь то python, java, php, node и т. Д.). И любые требуемые пакеты / зависимости уровня операционной системы.

По сути, вы перестраиваете содержимое этого ISO-образа внутри вашего файла Docker, используя инструменты установки пакетов ОС, такие как apt, инструменты уровня языка, такие как pip, PECL, PEAR, composer или maven, и, наконец, файлы, составляющие код приложения. .

Так, например: приложение PHP может зависеть от наличия в ОС build-essential и php-mysql. Тогда приложение может зависеть от таких пакетов, как веточка и монолог, загруженных через композитор. Если вы используете SASS, возможно, вам также потребуется установить ruby.

Ваша задача - отследить все это и создать файл Docker, который воспроизводит ISO-образ. Если вы используете общий стек, такой как J2EE-приложение в tomcat, или php-приложение, разработанное apache или ngnix, будут базовые образы докера, которые помогут вам пройти большую часть пути туда, куда вам нужно.

Похоже, есть некоторые инструменты, которые могут сделать это автоматически: Эквивалент Dependency Walker для Linux? . Я не могу поручиться за любого из них. Но вы также можете использовать инструменты командной строки. Например, это даст вам список всех установленных пользователем пакетов в системе Fedora:

sudo dnf history userinstalled

Когда приложение использует менеджер зависимостей, такой как composer или pip, обычно есть файл, в котором перечислены все языковые зависимости.

В конце процесса у вас будет портативное устаревшее приложение, которое можно легко развернуть в любом месте с минимальными затратами.

Как справедливо указывает один из комментариев, создание виртуальной машины из образа ISO - это еще один путь вперед, который будет гораздо проще осуществить. Зависимости приложения не будут явными, но, возможно, это нормально для вашего варианта использования.

...