Linux Labs

Контейнеры: Docker и compose / Ступень 4 из 11

Dockerfile: свой образ

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 7 · на машине · 7 мин

Образ собирают по Dockerfile

Разберёшь рецепт образа сайта и доставишь правку: соберёшь новый образ и контейнер из него.

Образ site:1 собран по рецепту — файлу Dockerfile в ~/site. Каждая строка — инструкция сборщику:

dockerfile
FROM busybox
WORKDIR /www
COPY index.html .
RUN date -u '+%F %T' > built.txt
CMD ["httpd", "-f", "-p", "8080"]
Инструкция Что делает при сборке
FROM busybox берёт за основу готовый образ busybox
WORKDIR /www создаёт каталог /www и делает его текущим
COPY index.html . копирует файл из каталога сборки в образ
RUN … выполняет команду внутри будущего образа — здесь пишет время сборки в built.txt
CMD […] задаёт команду старта контейнера; без своей CMD образ берёт её у основы

Собирает образ docker build:

bash
sudo docker build -t site:2 .

-t site:2 — имя нового образа. Точка в конце — контекст сборки: каталог, который docker целиком передаёт сборщику (в выводе сборки — шаг [internal] load build context). COPY видит файлы только из него.

COPY срабатывает один раз, при сборке: файл ложится в образ копией, и любой контейнер из site:1 получает ту же Site v1. docker restart перезапускает процесс в том же контейнере, с теми же файлами. Поэтому правка в ~/site доходит до сайта в два шага: новый образ, потом новый контейнер из него.

Заметка

Вывод сборки — строки с номерами #1, #2…: сначала служебные шаги [internal], потом инструкции Dockerfile по порядку — [1/4] FROM …, [2/4] WORKDIR /www. CMD своего шага не получает: это настройка образа.

Упражнение · сделать

Доставь правку на сайт

Собери из ~/site образ site:2 и замени контейнер web новым из этого образа — с тем же именем и портом 8080.

Войти и начать Машина доступна после входа

Цели · 0 из 2

  • Собрать образ site:2 из ~/site ещё не выполнена
  • Запустить web из нового образа ещё не выполнена

Цели шага

0 из 2
  • Собрать образ site:2 из ~/site — ещё не выполнена
  • Запустить web из нового образа — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Собрать образ site:2 из ~/site — ещё не выполнена
  • Запустить web из нового образа — ещё не выполнена
Загрузка…