Найти в Дзене
Николай Калюжный

Docker Series #2: Running a Webserver (httpd)

Добро пожаловать во вторую часть серии Docker. Если вы новичок в Docker или вам нужно быстро освежить в памяти информацию о том, что это такое и как он работает, я рекомендую ознакомиться с первой частью серии ниже. В предыдущей записи блога мы запустили образ Ubuntu в качестве контейнера Docker. Мы пошли дальше и подключились к оболочке контейнера, выполнив несколько команд Linux. В этом посте мы собираемся сделать еще один шаг вперед. Чтобы дать вам практический, реальный пример, мы настроим веб-сервер с помощью Docker и Apache httpd. Представьте ситуацию, когда вам нужно быстро настроить веб-сервер для тестирования. Возможно, вы хотите проверить политику NAT, инициируя трафик из Интернета, или изучить HTTP-трафик с помощью перехвата пакетов, или, возможно, у вас есть совершенно другая причина. Как у сетевого инженера, у меня нет большого опыта работы с Linux или веб-разработкой. Традиционно, я мог бы рассмотреть возможность запуска виртуальной машины или использования таких инструме
Оглавление

Добро пожаловать во вторую часть серии Docker. Если вы новичок в Docker или вам нужно быстро освежить в памяти информацию о том, что это такое и как он работает, я рекомендую ознакомиться с первой частью серии ниже.

Серия Docker #1: Hello DockerКак всегда, моя цель здесь — объяснить, что такое Docker, используя простой язык и наглядные примеры, я надеюсь дать вам четкое понимание того, что такое Docker.
Серия Docker #1: Hello DockerКак всегда, моя цель здесь — объяснить, что такое Docker, используя простой язык и наглядные примеры, я надеюсь дать вам четкое понимание того, что такое Docker.

В предыдущей записи блога мы запустили образ Ubuntu в качестве контейнера Docker. Мы пошли дальше и подключились к оболочке контейнера, выполнив несколько команд Linux.

В этом посте мы собираемся сделать еще один шаг вперед. Чтобы дать вам практический, реальный пример, мы настроим веб-сервер с помощью Docker и Apache httpd.

Почему Docker?

Представьте ситуацию, когда вам нужно быстро настроить веб-сервер для тестирования. Возможно, вы хотите проверить политику NAT, инициируя трафик из Интернета, или изучить HTTP-трафик с помощью перехвата пакетов, или, возможно, у вас есть совершенно другая причина.

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

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

HTTPD и Docker

HTTPD, или Apache HTTP Server, является одним из самых популярных веб-серверов в мире. Он бесплатный, с открытым исходным кодом и имеет огромное сообщество пользователей и разработчиков. Он используется для обслуживания чего угодно — от небольших личных блогов до крупных корпоративных систем.

-2

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

Извлечение образа HTTPD Docker

PS C:\Users\nkalyuzhnyy> docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
648e0aadf75a: Pull complete
c76ba39af630: Pull complete
b9819ffb14ec: Pull complete
37baa60548e6: Pull complete
6dbce5de7542: Pull complete
Digest: sha256:d7262c0f29a26349d6af45199b2770d499c74d45cee5c47995a1ebb336093088
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest

Эта команда указывает Docker скачать (или «вытянуть») файл httpd изображение из онлайн-репозитория Docker, Docker Hub. Docker Hub — это онлайн-библиотека, наполненная различными образами Docker, которые вы можете свободно использовать. В этом случае вы заимствуете httpd образ.

Запуск контейнера из образа HTTPD

PS C:\Users\nkalyuzhnyy> docker run -d -p 8080:80 --name web-server httpd
0389cee7f80186f4d69ffee549496821c091c8079cebb252628b8a0f4011121b

Эта команда указывает Docker запустить новый контейнер из команды httpd Изображение мы только что вытащили. Вот что делает каждая часть этой команды.

  • docker run указывает Docker создать и запустить новый контейнер.
  • -d — это опция, которая указывает Docker запускать контейнер в фоновом режиме (отсоединенный режим). Таким образом, вы можете продолжать использовать свой терминал во время работы веб-сервера.
  • -p 8080:80 — еще одна опция, которая указывает Docker на порт сопоставления 8080 на вашем станке к порту 80 внутри контейнера. Таким образом, когда вы переходите на http://localhost:8080 В вашем веб-браузере вы фактически получаете доступ к веб-серверу, работающему через порт 80 внутри контейнера Docker.
  • --name web-server — это возможность присвоить контейнеру понятное имя. В данном случае мы называем наш контейнер web-server.
  • httpd в конце указывается имя образа Docker (того, который мы только что скачали), который будет использоваться при создании этого контейнера.

После выполнения этой команды у вас будет полнофункциональный HTTP-сервер Apache, работающий в контейнере Docker, доступном по адресу http://localhost:8080.

-3

Без Docker

Конечно, запустить веб-сервер без Docker действительно возможно, и есть несколько способов сделать это.

  1. Ручная установка веб-сервера: Это включает в себя загрузку программного обеспечения веб-сервера (например, Apache HTTP Server, Nginx и т. д.) непосредственно на ваш компьютер, будь то Windows, macOS или Linux. Вам придется пройти через процесс установки, который иногда может быть сложным, включая интерфейсы командной строки и работу с конфигурационными файлами.
  2. Использование виртуальной машины: Вы можете создать виртуальную машину, установить на нее операционную систему, а затем установить веб-сервер в этой операционной системе. Это может быть ресурсоемким, так как каждая виртуальная машина работает под управлением полной операционной системы.

Docker абстрагируется от сложностей и различий между операционными системами, обеспечивая согласованную среду. Независимо от того, используете ли вы Windows, macOS или Linux, команды Docker для запуска веб-сервера остаются неизменными.

Доступ к терминалу работающего контейнера Docker

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

PS C:\Users\nkalyuzhnyy> docker exec -it web-server bash root@0389cee7f801:/usr/local/apache2#

Здесь web-server - это имя нашего контейнера (как указано при его запуске), и bash - это команда, которую мы хотим выполнить - она открывает оболочку bash внутри контейнера. Тем -it Флаг используется для того, чтобы сделать сеанс интерактивным, чтобы вы могли вводить команды.

Как только вы окажетесь внутри контейнера, вы можете использовать любую команду Linux, которая вам нравится, например echo или ls. Если вы хотите выйти из оболочки Docker, просто введите exit

root@0389cee7f801:/usr/local/apache2# exit exit PS C:\Users\nkalyuzhnyy>

Заключение

Вот и все, всего за пару команд, нам удалось вытащить httpd образ и запуск веб-сервера в контейнере Docker. Мы продемонстрировали, как Docker делает удивительно простым и быстрым развертывание веб-сервера без необходимости обширной веб-разработки или опыта работы с Linux. Оставайтесь с нами, чтобы узнать больше, поскольку мы продолжаем исследовать мир Docker в следующих постах!