Menu

Разворачиваем LAMP, используя Докер

Прочитав название данной статьи, вы могли бы задаться вопросом, почему мы должны привести в действие LAMP и LEMP стеки, используя Докер? Почему мы не можем просто установить их вручную? Настройка LAMP и LEMP стека очень проста, тогда почему мы должны усложнять работу с Docker? Ответов несколько. Как минимум, используя docker, гораздо легче и быстрее получить работоспособное веб-окружение, чем вручную устанавливать их. А ещё один очевидный плюс: используя Docker мы можем пользоваться одновременно различными версиями ПО (и даже дистрибутивами Linux) на одном сервере.

Как система виртуализации, Докер достаточно легковесен, и на уровне ОС обеспечивает решение для виртуализации. Не нужно иметь какого-либо серьёзного ПО для виртуализации (таких как VirtualBox, Xen или VMware и т. д.,) чтобы проверить и развернуть несколько операционных систем. 

С помощью docker можно быстро разворачивать стеки LAMP или LEMP, легко запуская готовый образ LAMP или LAMP. Делая все это в ручную, вы безусловно усложните себе процесс установки Apache, СУБД MySQL/mariadb и программных РНР по одному. Допустим, вы Разработчик/тестер или любой случайный энтузиаст программного обеспечения, и вы хотите, проверить веб-приложения. Чтобы проверить веб-приложение, вы должны установить Apache/nginx и СУБД MySQL/mariadb и РНР (это то, что мы называем LAMP или LAMP стеки). Это достаточно трудоемкий процесс, и тут Докер приходит на помощь.

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

 

Самое приятное: можно воспользоваться поиском готовых стеков LAMP/LAMP.

В консоли выполним:

 $ sudo docker search lamp 

Пример вывода:

 NAME DESCRIPTION STARS OFFICIAL AUTOMATED
 reinblau/lamp Dockerfile for PHP-Projects with MySql client 17 [OK]
 dockie/lamp 6 [OK]
 nickistre/ubuntu-lamp LAMP server on Ubuntu 4 [OK]
 nickistre/ubuntu-lamp-wordpress LAMP on Ubuntu with wp-cli installed 4 [OK]
 nickistre/centos-lamp LAMP on centos setup 3 [OK]
 damienlagae/lamp Docker LAMP with supervisord 3 [OK]
 boolean93/lamp LAMP based on linode/lamp 2 [OK]
 avatao/lamp LAMP base image 1 [OK]
 nickistre/ubuntu-lamp-xdebug LAMP on Ubuntu with xdebug installed 1 [OK]
 nickistre/centos-lamp-wordpress LAMP on CentOS setups with wp-cli installed 1 [OK]
 linuxconfig/lamp Automated build LAMP stack environment for... 1 [OK]
 greyltc/lamp a super secure, up-to-date and lightweight... 0 [OK]
 kazaoki/lamp fetching... 0 [OK]
 greyltc/lamp-gateone LAMP stack with gateone server & webdav 0 [OK]
 fauria/lamp Modern, developer friendly LAMP stack. Inc... 0 [OK]
 drunomics/lamp-memcached LAMP + Memcached base image. 0 [OK]
 rpawel/lamp Apache 2.4 + php5-fpm container 0 [OK]
 lioshi/lamp Docker image for LAMP + MySql under debian 0 [OK]
 nickistre/centos-lamp-xdebug LAMP on centos with xDebug 0 [OK]
 greyltc/lamp-aur LAMP stack (in Arch with php7) with AUR ac... 0 [OK]
 alledia/lamp General LAMP for our tests, based on phusi... 0 [OK]
 greatfox/lamp 0 [OK]
 cnrk/lamp LAMP stack Docker image. 0 [OK]
 grmanit/lamp Based on tutum/lamp with additional settin... 0 [OK]

Как видно из приведенного выше результата, существует много готовых образов со стеками LAMP, доступных для Arch Linux, в CentOS и Ubuntu. Образы ранжируются по рейтингу.

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

 $ sudo docker search lemp

Затем необходимо скачать образ. Например, попробуем скачать образ  nickistre/ubuntu-lamp.

$ docker pull nickistre/ubuntu-lamp

Пример вывода:

Using default tag: latest
latest: Pulling from nickistre/ubuntu-lamp
faecf96fd5ab: Pull complete 
995977506e98: Pull complete 
efb63fb8dcb6: Pull complete 
a3ed95caeb02: Pull complete 
61626f5cc06d: Pull complete 
d42e54d21590: Pull complete 
4a32d1f581a1: Pull complete 
52f44a8dd6d0: Pull complete 
ce6c1074ae9e: Pull complete 
2fa559435609: Pull complete 
93a433221384: Pull complete 
521d09b9a2d1: Pull complete 
6222edddc59d: Pull complete 
8fa401b50efc: Pull complete 
683063a5d5e0: Pull complete 
1f87fa5088b3: Pull complete 
c5ee1c14048f: Pull complete 
Digest: sha256:e913d43c204b3cdb931156c1a680c712acfe8db531225ec7b9e4708fc7ebe93c
Status: Downloaded newer image for nickistre/ubuntu-lamp:latest 

Приведенная выше команда будет загружать LAMP стек в Ubuntu. Вы можете скачать LAMP-образы для других платформ, таких как CentOS, Arch Linux.

Кроме того, вы можете искать, загружать и разворачивать образы docker из Докер-концентраторов, где размещены тысячи самых популярных образов.

Скачайте образ, выберите Настройки, чтобы просмотреть дополнительные детали, такие как: установка и как ими пользоваться.

Все загруженные изображения будут сохранены локально в файле /var/lib/docker/.В списке загруженных образов docker, выполните следующую команду:

$ docker images 

Пример вывода:

REPOSITORY TAG IMAGE ID CREATED SIZE
nickistre/ubuntu-lamp latest 5e750e4f49e4 2 days ago 633 MB
reinblau/lamp latest 2813b461f843 9 days ago 697.9 MB
hello-world latest 690ed74de00f 5 months ago 960 B

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

 $ docker run -it nickistre/ubuntu-lamp /bin/bash

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

root@robocop:/# 

Запустите службу Apache с помощью команды:

# service apache2 start 

Затем, сервис MySQL с помощью команды:

# service mysql start 

Нужно проверить работает ли сервис Apache. Чтобы сделать это, откройте веб-браузер и перейдите по ссылке http://container_IP/. Вы должны увидеть тестовую страницу-сервера Apache.

Чтобы найти IP-адреса, просто введите ‘ifconfig’ или ‘ip -a’ в контейнерном терминале.

Работа с терминалом контейнера очень проста, синтаксис следующий: docker exec -it <mycontainer> bash

Например, слёту узнаём информацию об адресе: docker exec -it d2d4a89abee9 ip addr

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

$ docker exec -it web sh
/ # echo This is inside the container.
This is inside the container.
/ # exit
$

 

Вы можете проверить версию Apache, MySQL и PHP с помощью команды:

# apache2 –v
# mysql –v
# php -v 

Стек Lamp в Ubuntu развернут. Теперь, вы можете начать разворачивать и тестировать веб-приложения.

Примечание для новичков :

Используйте docker для тестирования и разработки. Кроме того, не путайте Докер с другими средствами виртуализации. Докер не будет разворачивать Lamp-стеки или любые другие приложения непосредственно на вашей хост-системе. Чем именно будет заниматься докер:

1) установка гостевой ОС (мы называем его "контейнер")

2) разворачивание стек Lamp внутри гостевой ОС. Технически, это то же самое, что и другие технологии виртуализации, но главным отличием являются методы виртуализации, такие как VirtualBox, KVM и VMware, гостевые системы (контейнеры), использование ядра хост-системы. Все гости будут эффективно совместно использовать ресурсы, такие как ЦП, ОЗУ, HDD, сети и т.д. вашего оригинального хост-компьютера.

Авторизуйтесь, чтобы получить возможность оставлять комментарии
Go to top