Если вы являетесь системным администратором 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 (и контейнерах в целом) более подробно.
Комментарии (0)