Документация

Задачи

Задача № 1: Создание образа с пакетами из репозитория

Ваша задача: создать новый образ, который будет содержать интерпретатор языка Ruby.

Сначала решите данную задачу с использованием ручного подхода из прошлой практики:

  1. Создайте контейнер на основе базового образа Debian
  2. Установите в контейнер Ruby из официального репозитория
  3. Остановите контейнер
  4. Создайте новый образ на основании остановленного котейнера

Затем решите поставленную задачу с использованием команды docker image build:

  1. Создайте Dockerfile, описывающий необходимые шаги
  2. Установите интерпретатор irb как команду по умолчанию при запуске контейнера
  3. Создайте образ с помощью Dockerfile и команды docker image build

Сравните образы, полученные в первом и последнем шаге

Задача № 2: Уменьшение объёма образа

При выполнении сборки через Dockerfile для каждого действия создаются отдельные слои. Для уменьшения объёма данных в образе желательно очищать кеш APT: apt-get clean и rm -rf /var/lib/apt/lists/*

Модифицируйте созданный на предыдущем задании Dockerfile, чтобы решить поставленную задачу.

Способ № 1:

  1. Добавьте шаг на вызов apt-get clean
  2. Добавьте шаг на вызов rm

Способ № 2:

  1. Модифицируйте шаг установки так, чтобы обновление кеша apt, установка интерпретатора и очистка кеша происходила в рамках одного шага

Сравните размер образов, полученных в результате выполнения задачи способом № 1 и способом № 2. Сравните историю и детальную информацию данных образов.

Задача № 3: Создание образа с интерпретатором Ruby с использованием ruby-install

Создайте Dockerfile, который будет создавать Docker-образ с установленным интерпретатором ruby последней версии. Установка должна происходить с помощью скриптов ruby-install.

  • Интерпретатор ruby не должен быть установлен из репозитория Debian
  • Точка входа контейнера - bash-интерпретатор с настроенным ruby-интерпретатором, который был поставлен с помощью ruby-install

Выполните дополнительную очистку образа от временных файлов ruby-install

Задача № 4: Создание параметризованной сборки образа с интерпретатором Ruby

Добавьте к Dockerfile аргумент - версию интерпретатора Ruby, который необходимо поставить внутри контейнера

В зависимости от переданного аргумента должна происходить установка указанной пользователем версии интерпретатора

Задача № 5: Создание образа с Ruby-приложением

Расширьте свой Dockerfile так, чтобы он производил установку интерпретатора Ruby, а также устанавливали ваше веб-приложение. Точкой входа в образ должен быть запуск приложения

Требования к реализации:

  1. Для работы приложения необходимо создать отдельного пользователя
  2. Приложение должно предоставлять только динамическую информацию, без раздачи статики
  3. Приложение должно работать от имени данного пользователя

Задача № 6: Использование официального базового образа Ruby

Измените свой Dockerfile так, чтобы он использовал базовый образ Ruby: https://hub.docker.com/_/ruby

Сравните

  • Полученный результат
  • Объём Dockerfile между текущей версией и предыдущей