Докер образы

Создание Докер образа в рабочем пространстве

С видео примером можно ознакомиться в разделе видео.

Для создания Докер образа необходимо:

Примеры названий:

  • docker.io/myrepo/myimagename:latest - при размещении образа в общем реестре на Dockerhubopen in new window
  • myrepo/myimagename:latest - при размещении образа в общем реестре на Dockerhubopen in new window
  • mycompanyregister.com/myrepo/myimagename:latest - при размещении образа в собственном реестре

При размещении образа на Dockerhubopen in new window или на собственном реестре необходимо предоставление публичных прав на чтение образа.

В тестовых целях возможно использовать локальный публичный реестре платформы. В этом случае названия Докер образов будут иметь вид:

rep.rndflow.com/myrepo/myimagename:latest

Внимание! Использовать только для "одноразовых" тестовых целей. Файлы, размещенные в тестовом репозитории, могут быть удалены без предупреждения в любой момент! Сам тествый сервис также может быть отключен в любой момент без предупреждения!

Для Докер образа действуют следующие правила:

  • Название образа должно быть уникальным для всей платформы.
  • Права пересборки образа имеет только владелец рабочего пространства, в котором он был создан.
  • После нажатия кнопки будет создана плитка Докер образа Docker image add

  • После щелчка по плитке Докер образа будет открыто окно редактора

    Docker image editor

Существет две возможности предоставления файлов для сборки образа:

Непосредственное создание файла сборки

  • В Параметры сборки выбрать ЛОКАЛЬНАЯ ПАПКА.

  • Ввести команды создания образаopen in new window в редакторе Dockerfile.

    Смотреть примеры в инструкции Создание Докер образа вне платформы

  • Нажать кнопку СОХРАНИТЬ.

  • Нажать кнопку СОБРАТЬ.

  • Убедиться, что определенный платформой Докер реестр корректен. При необходимости изменить.

  • Ввести, при необходимости, логин и пароль к Докер реестру, в который будет загружаться созданный образ.

    Если Докер реестр не требует авторизации для записи образов, то оставить данные поля незаполненными.

    Docker image editor

  • Нажать кнопку СОБРАТЬ.

  • Будет запущена сборка

    Docker image build process

  • После успешного завершения редактор примет вид:

    Docker image editor after build

  • На вкладке РЕСУРСЫ в разделе Docker-образы соответстующая плитка примет вид:

    Docker image after build

Использование внешнего Git репозитория с файлами сборки

  • В Параметры сборки выбрать GIT РЕПОЗИТОРИЙ.

  • Ввести URL Git репозитория с файлами сборки Докер образа.

  • Нажать кнопку СОХРАНИТЬ.

  • Нажать кнопку СОБРАТЬ.

  • Убедиться, что определенный платформой Докер реестр корректен. При необходимости изменить.

  • Ввести, при необходимости, логин и пароль к Докер реестру, в который будет загружаться созданный образ.

    Если Докер реестр не требует авторизации для записи образов, то оставить данные поля незаполненными.

  • В случае использования приватного Git репозитория для загрузки файлов сборки образа вести персональный токен для доступа.

Если Git репозиторий является публичным и не требует авторизации, то поле для ввода токена оставить незаполненным. Описание создания персонального токена для GitHubopen in new window и GitLabopen in new window.

Docker image editor git context

  • Нажать кнопку СОБРАТЬ.

  • Будет запущена сборка

Создание Докер образа вне платформы

  1. Зарегистрироваться на публичном Докер реестреopen in new window.

  2. Создать новый репозиторий imagename

    imagename - произвольное название: mycoolimage или python-projectXX

  3. Установить Докер приложениеopen in new window на локальный компьютер. Пользователи Windows могут установливать Docker Desktopopen in new window.

    Также можно использовать публичные сервисы работы с Докер образами, например Play with Dockeropen in new window.

  4. Создать новый Dockerfile файл на основе стандартных образов.

    Вариант 1

    Для создания собственного образа необходимо использовать базовый образ rndflow/job.pyopen in new window.

    FROM docker.io/rndflow/job.py
    RUN ...
    COPY ...
    

    Вариант 2

    В случае необходимости использовать образ операционной системы отличный от используемого в rndflow/job.pyopen in new window необходимо самостоятельно устанавливать библиотекy job.pyopen in new window. Также необходимо установить библиотеки moreutils, procps, curl, zlib1g-dev, libjpeg-dev.

    FROM ...
    ...
    RUN apt-get update && apt-get install -y moreutils procps curl zlib1g-dev libjpeg-dev
    RUN cd /opt/ && curl -L https://github.com/rndflow/rndflow-job-py/archive/refs/heads/master.tar.gz | tar -xvz && \
    pip3 install -r rndflow-job-py-master/requirements.txt && pip3 install ./rndflow-job-py-master && rm -rf rndflow-job-py-master
    ...
    

    Если при этом требуется поддержка интерактивного сервера Jupyteropen in new window, то необходимо установить:

    RUN pip3 install notebook jupytext
    

    Вариант 3

    Если требуется поддержка счета на AMD или NVIDIA GPU картах, то необходимо использовать соответствующие базовые образы.

  5. Собрать образ из Dockerfile (если используется podman, то заменить docker на podman).

    В папке с Dockerfile: docker build -t user/imagename:1.0 . или docker build -t user/imagename:1.0 -f _Dockerfile_ .

    Здесь user/imagename - пользователь реестра/название образа (репозитория реестра из пункта 2 ), :1.0 - версия.

    При пересборке образа без изменения Dockerfile файла необходимо очистить кеш предыдущей сборки. Например, можно удалить последний образ: docker rmi user/imagename:1.0

    или осуществлять сборку без использования кеша: docker build -t user/imagename:1.0 . --no-cache

  6. Проверить появление образа: docker image ls

  7. Тестовый запуск: docker run -it --rm imagename

  8. Загрузить новый образ на публичный Докер реестрopen in new window

    • Подключиться к реестру : docker login -u user -p **********

      или чтобы не оставлять пароль в истории команд : docker login -u user

    • Загрузить образ в реестр: docker push user/imagename:1.0

  9. Если необходимо удалить ошибочно загруженный образ из реестра: Инструкция удаления образаopen in new window

  10. Если сборка идет на стороннем сервисе, то рекомендуется отсоединиться от реестра: docker logout