Как установить веб-сервер Apache в контейнере Docker

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

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

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

Для примера в этой статье мы расскажем, как установить Docker на дистрибутивы на базе RHEL, такие как CentOS, Rocky/Alma Linux и Debian/Ubuntu, и запустить контейнер Apache из Docker Hub.

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

Установка Docker в Linux

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

curl -fsSL https://get.docker.com | sh

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

systemctl start docker
systemctl enable docker
systemctl status docker

На этом этапе мы можем просто выполнить команду.

docker

Чтобы просмотреть список доступных команд или получить помощь.

docker COMMAND --help
docker ps --help

расскажет нам, как составить список контейнеров, присутствующих в нашей системе, а

docker run --help

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

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

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

В следующем примере мы создадим контейнер Apache 2.4 под названием tecmint-web. Мы будем использовать образ httpd:2.4 из Docker Hub.

Наш план состоит в том, чтобы запросы, поступающие на наш публичный IP-адрес на порт 8080, перенаправлялись на порт 80 в контейнере. Кроме того, вместо того чтобы обслуживать содержимое самого контейнера, мы будем обслуживать простую веб-страницу из /home/user/website.

Для этого мы сопоставим /home/user/website/ с /usr/local/apache2/htdocs/ на контейнере. Обратите внимание, что для продолжения работы необходимо использовать sudo или войти под именем root, и не опускайте прямые слэши в конце каждого каталога.

sudo docker run -dit --name tecmint-web -p 8080:80 -v /home/user/website/:/usr/local/apache2/htdocs/ httpd:2.4

На данный момент наш контейнер Apache должен быть запущен.

sudo docker ps

Сейчас давайте создадим простую веб-страницу с именем docker.html внутри каталога /home/user/website с помощью редактора vim.

vi /home/user/website/docker.html

Добавьте в файл следующий пример HTML-содержимого.

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Learn Docker at Tecmint.com</title>
</head>
<body>
   <h1>Learn Docker With Us</h1>  
</body>
</html>

Следующим шагом направьте браузер на Server-IP:8080/docker.html (где Server-IP – это публичный IP-адрес вашего хоста). Перед вами должна появиться страница, которую мы создали ранее.

При желании вы можете остановить контейнер.

sudo docker stop tecmint-web

и удалить его:

sudo docker rm tecmint-web

Для завершения очистки вы можете удалить образ, который использовался в контейнере (опустите этот шаг, если вы планируете создать другие контейнеры Apache 2.4 в ближайшее время).

sudo docker image remove httpd:2.4

Обратите внимание, что во всех описанных выше шагах нам не пришлось устанавливать веб-сервер на хост.

Заключение

В этой статье мы рассказали, как установить Docker и управлять контейнером. К сожалению, это только основы – существуют целые курсы, книги и сертификационные экзамены, которые рассказывают о Docker (и контейнерах в целом) более подробно.

Зарубин Иван Эксперт по Linux и Windows

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

Вдохновлен www.tecmint.com

Похожие статьи

Комментарии (0)