В нашем справочнике есть статья, с помощью которой можно установить веб-сервер Nginx на Ubuntu. Здесь же рассмотрим процесс установки Nginx на Ubuntu при помощи Docker.
Docker представляет собой открытую платформу для разработки, доставки и запуска приложений в контейнерах. Контейнеры позволяют упаковать приложение и все его зависимости в единую исполняемую среду, обеспечивая изолированное и повторяемое окружение для запуска приложений на различных системах.
Для установки веб-сервера и запуска сайта мы будем использовать виртуальный выделенный сервер, на которым проведена предварительная настройка системы. В частности, все действия мы будем совершать с использованием административного пользователя, который не является учётной записью root
.
Установка Docker
Перед установкой требуемого программного обеспечения необходимо обновить списки пакетов в системе. Делается это при помощи команды apt
:
sudo apt update
Далее, поскольку Docker доступен для установки в том числе и из стандартного репозитория Ubuntu, запустите его инсталляцию с использованием той же утилиты apt
:
sudo apt install docker.io
Корректность установки можно подтвердить при помощи вывода версии Docker:
docker --version
В нашем случае мы имеем дело с версией 24.0.5:

Также можно проверить текущее состояние службы docker
:
sudo systemctl status docker
Вывод команды должен выглядеть примерно следующим образом:

Пока ещё наш экземпляр Docker не содержит ни одного образа. Это можно увидеть выведя список установленных образов:
sudo docker images
Вывод данной команды в настоящее время пуст:

Запуск контейнера Nginx
На сайте Docker Hub размещено огромное количество образов самых разнообразных приложений. В том числе есть и раздел, посвящённый Nginx. Данный раздел содержит достаточное количество различных образов Nginx, и в нашем примере мы рассмотрим работу с актуальной на момент написания статьи стабильной версией образа веб-сервера. На Docker Hub такая версия называется stable
. Данная версия образа является выбором именно для нашего конкретного примера. Вы же можете использовать любой из представленных в списке образов. Например, latest
– образ последней актуальной на текущий момент версии образа Nginx. В данном случае это – 1.25.4.

Таким образом, команда для загрузки образа и запуска контейнера из него в нашем примере будет выглядеть следующим образом:
sudo docker run -d --restart always --name your-nginx-container -p 80:80 -v /var/www/html:/usr/share/nginx/html nginx:stable
В данном случае:
- команда
run
запускает контейнер из образа, при этом, если образ отсутствует в системе, будет произведена его загрузка; - ключ
-d
означает, что контейнер будет запущен в фоновом режиме; - опция
--restart always
указывает на то, что контейнер должен автоматически перезапускаться в случае его остановки, если только он не был остановлен пользователем; --name your-nginx-container
означает, что создаваемый контейнер будет называтьсяyour-nginx-container
;- опция
-p 80:80
используется для проброса портов между контейнером и хост-системой, то есть порт 80 внутри контейнера будет привязан к порту 80 на хостовой системе; -v /var/www/html:/usr/share/nginx/html
означает, что каталог/var/www/html
на хост-системе будет смонтирован к каталогу внутри контейнера/usr/share/nginx/html
;nginx:stable
– название образа актуальной стабильной версии Nginx.
Резюмируя, мы загрузили образ nginx:stable
, создали из него контейнер your-nginx-container
и запустили его. При этом запросы, поступающие на порт 80 хостовой системы, будут направляться на порт 80 внутри контейнера для обработки веб-сервером. Файлы сайта будут располагаться в директории /var/www/html/
хост-системы, а веб-сервер будет обслуживать их обращаясь к каталогу /usr/share/nginx/html/
внутри контейнера.
Для отображения списка запущенных контейнеров Docker на текущем хосте можно использовать команду:
sudo docker ps
Поскольку в нашей системе запущен всего один контейнер, её вывод у нас выглядит так:

Чтобы подключиться к системе контейнера, используйте команду:
sudo docker exec -it your-nginx-container bash
Здесь,
your-nginx-container
– название контейнера;- ключ
-i
позволяет вводить данные в стандартный STDIN-ввод для взаимодействия пользователя с контейнером; -t
выделяет псевдотерминал (TTY), который обычно используется для взаимодействия с командной оболочкой контейнера;bash
означает, что мы запускаем оболочку командной строки Bash внутри контейнера.
Для отключения от контейнера используйте команду exit
или комбинацию клавиш Ctrl
D
.
Создание тестовой страницы сайта на Nginx
Теперь создадим тестовую страничку сайта, которая будет работать на веб-сервере Nginx. Для этого перейдите в каталог хостовой системы /var/www/html/
и создайте там файл index.html
:
cd /var/www/html/
sudo nano index.html
в нашем примере мы наполним данный файл следующим содержимым:
<html>
<head>
<title>
Domain on Nginx
</title>
</head>
<body>
<h1>
Connection to your domain is created successfully!!!
</h1>
</body>
</html>
Далее, закройте файл index.html
с сохранением внесённых изменений, после чего проверьте доступность созданной страницы. Не покидая командную строку это можно сделать при помощи команды curl
:
curl localhost
Если наша тестовая страница доступна, то вывод команды должен отобразить содержимое файла index.html
:

Также увидеть нашу тестовую страницу можно набрав в браузере IP-адрес виртуального сервера, либо доменное имя сайта, привязанное к VPS при помощи A-записи:
