Я хочу создать образ докера на основе Centos8. В этом образе я хочу установить Python версии 3.7.7. Такой образ Python уже существует в dockerhub.

Как я могу использовать оба базовых образа для создания нового образа докера?

From python:3.7.7 
# which files and foldes do I have to copy to my new docker image?

From centos:8
LABEL maintainer myself@test.com

Если это невозможно, это лучший способ создать версию Python с нуля Ссылка. Проблема с этим решением в том, что образ докера огромен.

1
user5580578 17 Июл 2020 в 17:05

1 ответ

Лучший ответ

TL; DR Обычно на изображении не может быть всего, что есть в двух изображениях (причина объяснена ниже)
TL; DR Список решений:

  1. Используйте базовый образ, который уже является CentOS и установлен Python, возможно, это изображение.
  2. Начните с образа CentOS, установите Python с помощью диспетчера пакетов в Dockerfile.
  3. Начните с образа CentOS, соберите Python в Dockerfile.
  4. Просто используйте Python в предоставленных дистрибутивах.

Длинный ответ:
Использование FROM imagename эквивалентно загрузке предварительно созданного образа и последующему добавлению к нему инструкций в текущем Dockerfile. Изображение - это, по сути, снимок файловой системы.
Один из них - это снимок контейнера, в котором, вероятно, установлен дистрибутив Linux и установлен Python.
Другой - это моментальный снимок файловой системы другого дистрибутива Linux со всеми его функциями. Вы просто не можете смешивать их, потому что изображение - это не просто Python. Это все, что нужно Python для работы вместе с работающим ядром Linux, и их смешивание почти наверняка сломает их. потому что у них есть конфликтующие файлы и способы их запуска.
Но вы можете изменить один снимок, чтобы сделать из него другой снимок, например, вы можете взять образ CentOS и установить Python с помощью диспетчера пакетов, а затем сделать снимок и использовать его в качестве рабочего контейнера Docker.

0
FazeL 18 Июл 2020 в 16:26