Цель урока: Понять, что такое Dockerfile, изучить его базовые команды (FROMCOPY) и собрать свой первый уникальный образ, который будет содержать вашу веб-страницу.

Часть 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+OEnter) и выйдите (Ctrl+X).

Часть 3: Пишем рецепт (Dockerfile)

Теперь самое главное. Мы должны объяснить Докеру, как собрать образ.
Создаем файл с названием Dockerfile (именно так, с большой буквы и без расширения .txt).

nano Dockerfile

Впишите в него всего две строки:

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

Разбор инструкций:

  1. FROM nginx:alpine - База.
    Мы говорим: "Не делай всё с нуля. Возьми за основу готовый официальный образ Nginx".

    • Почему alpine? Это специальная версия Linux, которая весит всего 5 Мб, а не 100 Мб. Для контейнеров принято использовать самые легкие версии.

  2. 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)

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

Давайте сделаем это быстро:

  1. Редактируем файл на сервере:

    nano index.html

    Поменяйте текст на "Это уже ВТОРАЯ версия сайта!". И сохраните файл.

  2. Собираем новый образ с тегом v2:

    docker build -t my-site:v2 .
  3. Останавливаем и удаляем старый контейнер:

    docker stop personal-site
    docker rm personal-site
  4. Запускаем новый из версии v2:

    docker run -d -p 80:80 --name personal-site my-site:v2

Обновите браузер. Текст изменился.

Итоги урока

Сегодня вы освоили фундаментальный навык DevOps-инженера.

  1. Dockerfile - это документ, описывающий, как из кода сделать рабочее приложение.

  2. FROM - указывает, на чьих плечах мы стоим (базовый образ).

  3. COPY - переносит ваши файлы внутрь образа.

  4. docker build - превращает текстовый рецепт в готовый образ.

Теперь ваш сайт - это не просто папка с файлами, это переносимый артефакт. Вы можете отправить этот образ my-site:v2 на любой сервер (даже другу на ноутбук), и он запустится там абсолютно так же.

В Уроке 63 мы поговорим о том, что делать, если данные должны жить дольше, чем контейнер. Мы разберем Docker Volumes (хранилища), чтобы при удалении контейнера ваши базы данных и файлы не исчезали.

Перейти к просмотру - УРОК №63.

подарок Промо-код: PROMO15 - скидка 15%! огонь

Введите при оформлении первого заказа на сайте: Hosting-VDS.com

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи считают это полезным (0 голосов)