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

by itisgood

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

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

Но это не волшебство.

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

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

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

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

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

Установка Docker в системах Linux

Для начала давайте установим Docker с помощью следующей команды curl.

Это позволит загрузить и запустить скрипт, который добавит репозиторий 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

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

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

В следующем примере мы создадим контейнер Apache 2.4 под названием itisgood-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 itisgood-web -p 8080:80 -v /home/user/website/:/usr/local/apache2/htdocs/ httpd:2.4

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

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

Затем откройте браузер на Server-IP:8080/docker.html (где Server-IP – это публичный IP-адрес вашего хоста).

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

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

$ sudo docker stop itisgood-web

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

$ sudo docker rm itisgood-web

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

$ sudo docker image remove httpd:2.4

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

Заключение

В этой статье мы объяснили, как установить Docker и управлять контейнером.

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

 

 

 

 

You may also like

Leave a Comment