
Цель урока: Понять, что такое Dockerfile, изучить его базовые команды (FROM, COPY) и собрать свой первый уникальный образ, который будет содержать вашу веб-страницу.
Часть 1: Зачем нам свои образы?
В Уроке 61 мы запустили Nginx. Он показал страницу "Welcome to nginx!".
Но вам не нужна стандартная страница. Вам нужно разместить там ваш сайт.
Конечно, можно запустить контейнер, залезть внутрь и заменить файлы вручную. Но это плохой путь.
-
Если контейнер удалится - ваши изменения пропадут.
-
Если нужно запустить такой же сайт на другом сервере - придется всё делать заново вручную.
Правильный путь Docker:
Мы создаем свой образ, в который сразу "запекаем" наш сайт. Это как создать свой собственный установочный диск Windows, где уже сразу установлены ваши любимые программы и обои рабочего стола.
Для этого используется файл-инструкция, который называется Dockerfile.
Часть 2: Подготовка рабочего места
Мы работаем от root.
Сначала создадим отдельную папку для нашего проекта. В Docker очень важно соблюдать порядок: один проект - одна папка.
mkdir my_first_site
cd my_first_site
Теперь создадим наш файл сайта index.html.
nano index.html
Вставьте туда простой код (или напишите свой текст):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Мой сайт</title>
</head>
<body>
<h1>Привет! Это мой личный образ Docker.</h1>
<p>Я собрал его сам в уроке 62.</p>
</body>
</html>
Сохраните (Ctrl+O, Enter) и выйдите (Ctrl+X).
Часть 3: Пишем рецепт (Dockerfile)
Теперь самое главное. Мы должны объяснить Докеру, как собрать образ.
Создаем файл с названием Dockerfile (именно так, с большой буквы и без расширения .txt).
nano Dockerfile
Впишите в него всего две строки:
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
Разбор инструкций:
-
FROM nginx:alpine - База.
Мы говорим: "Не делай всё с нуля. Возьми за основу готовый официальный образ Nginx".-
Почему alpine? Это специальная версия Linux, которая весит всего 5 Мб, а не 100 Мб. Для контейнеров принято использовать самые легкие версии.
-
-
COPY index.html ... - Копирование.
Мы говорим: "Возьми файл index.html из текущей папки (где мы сейчас) и положи его ВНУТРЬ образа по пути /usr/share/nginx/html/index.html".
Именно в этой папке Nginx ищет файлы сайта. Мы просто заменяем стандартный файл на наш.
Сохраните и закройте файл.
Часть 4: Сборка образа (Build)
У нас есть "ингредиенты" (html-файл) и "рецепт" (Dockerfile). Пора "готовить".
Выполните команду:
docker build -t my-site:v1 .
Разбор команды:
-
docker build: Команда сборки.
-
-t my-site:v1 (Tag): Мы даем имя нашему образу (my-site) и версию (v1). Всегда ставьте версии! Завтра вы сделаете v2, и старая не потеряется.
-
. (Точка): Самое важное! Точка в конце означает: "Ищи Dockerfile и файлы для копирования здесь, в текущей папке". Не забудьте точку!
Что произошло?
Вы увидите в консоли шаги (Steps). Docker скачал Alpine-версию Nginx (если её не было) и выполнил команду COPY.
Проверим, появился ли образ:
docker images
Вы увидите в списке my-site с тегом v1.

Часть 5: Запуск своего творения
Теперь момент истины. Запускаем контейнер не из чужого nginx, а из нашего my-site:v1.
Сначала убедитесь, что у вас не запущены старые контейнеры, занимающие порт 80 (из прошлого урока):
docker rm -f $(docker ps -aq)
(Эта команда принудительно удалит все старые контейнеры, чтобы освободить место. На чистом тестовом сервере это безопасно).
Теперь запускаем наш:
docker run -d -p 80:80 --name personal-site my-site:v1
Часть 6: Проверка
Открывайте браузер: http://ВАШ_IP_АДРЕС.
Вы должны увидеть:
"Привет! Это мой личный образ Docker."
Если вы это видите - поздравляю! Вы только что создали свой первый программный продукт в Docker.
Часть 7: Изменение сайта (Версия 2)
Допустим, вы хотите изменить текст на сайте.
Как новички делают ошибку: они пытаются залезть в работающий контейнер и править файл там.
Как делают профи: они меняют исходник, меняют версию и пересобирают образ.
Давайте сделаем это быстро:
-
Редактируем файл на сервере:
nano index.htmlПоменяйте текст на "Это уже ВТОРАЯ версия сайта!". И сохраните файл.
-
Собираем новый образ с тегом v2:
docker build -t my-site:v2 . -
Останавливаем и удаляем старый контейнер:
docker stop personal-site docker rm personal-site -
Запускаем новый из версии v2:
docker run -d -p 80:80 --name personal-site my-site:v2
Обновите браузер. Текст изменился.

Итоги урока
Сегодня вы освоили фундаментальный навык DevOps-инженера.
-
Dockerfile - это документ, описывающий, как из кода сделать рабочее приложение.
-
FROM - указывает, на чьих плечах мы стоим (базовый образ).
-
COPY - переносит ваши файлы внутрь образа.
-
docker build - превращает текстовый рецепт в готовый образ.
Теперь ваш сайт - это не просто папка с файлами, это переносимый артефакт. Вы можете отправить этот образ my-site:v2 на любой сервер (даже другу на ноутбук), и он запустится там абсолютно так же.
В Уроке 63 мы поговорим о том, что делать, если данные должны жить дольше, чем контейнер. Мы разберем Docker Volumes (хранилища), чтобы при удалении контейнера ваши базы данных и файлы не исчезали.
Перейти к просмотру - УРОК №63.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com

