Образы Docker в Python 3.7

Я хочу докеризовать свое приложение на Python. Я зашел в центр Docker и обнаружил, что существует множество потенциально звучащих базовых образов.

3.7.0-stretch, 3.7-stretch, 3-stretch, stretch (3.7/stretch/Dockerfile)
3.7.0-slim-stretch, 3.7-slim-stretch, 3-slim-stretch, slim-stretch, 3.7.0-slim, 3.7-slim, 3-slim, slim (3.7/stretch/slim/Dockerfile)
3.7.0-alpine3.8, 3.7-alpine3.8, 3-alpine3.8, alpine3.8, 3.7.0-alpine, 3.7-alpine, 3-alpine, alpine (3.7/alpine3.8/Dockerfile)
3.7.0-alpine3.7, 3.7-alpine3.7, 3-alpine3.7, alpine3.7 (3.7/alpine3.7/Dockerfile)

Несмотря на мои попытки поискать в Google, я не мог найти разницы между «растяжка», «стройная», «стройная-стрейч» и альпийская. Помощь?

stretch мы можем спорить, но остальные четко описаны на этой самой странице: hub.docker.com/_/python
deceze 10.10.2018 14:44

Упс, я пропустил это внизу страницы. Но все же остается несколько открытых вопросов: 1) что такое растяжка? 2) нижний текст предлагает использовать простые изображения 3.7.n, но я не вижу их в подробном списке всех доступных изображений. Что мне не хватает?

David Goldfarb 10.10.2018 14:51

Я думаю, что все эти теги "stretch" происходят от кодового имени Debian "Stretch": wiki.debian.org/DebianStretch

Carlos Mermingas 10.10.2018 14:51

В любом случае, 3.7 явно существует и выглядит как та версия, которую я хочу. Это в основном сводится к тому, что я неправильно прочитал страницу. Простите всех.

David Goldfarb 10.10.2018 15:07

Исправлено :) github.com/docker-library/docs/pull/1332

Messa 14.10.2018 12:15
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
36
5
45 365
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Репозиторий Github с файлами Dockerfiles находится здесь, но он очень динамичный и его нелегко читать:

https://github.com/docker-library/python

Ридми также находится здесь:

https://github.com/docker-library/docs/tree/master/python

Похоже, что информация о stretch действительно отсутствует. Не удалось найти даже в истории ревизий git, если он был случайно удален.

Я создал проблему: https://github.com/docker-library/python/issues/343

Потягиваться - это кодовое имя Debian 9 - в настоящее время стабильная версия (до 06.07.2019, когда был выпущен Debian 10 Бастер). «Старая стабильная версия» Debian 8 имеет кодовое имя Джесси.

https://wiki.debian.org/DebianReleases

Моя личная рекомендация - использовать минималистичные образы Alpine и использовать образы Debian, если что-то не работает :)

Сравнение Debian и Alpine (если возможно, с точки зрения Docker):

Судя по моему ограниченному опыту, наиболее заметным отличием является apt против apk и GNU libc6 против musl libc. А Alpine использует Busybox вместо полных версий многих системных команд.

Обновление: многие колеса Python со скомпилированным двоичным кодом будут работать с образами на основе Debian, но их необходимо перекомпилировать (с помощью pip install) для образов на основе Alpine. В этих случаях я рекомендую использовать образы на основе Debian.

Итак, если я делаю FROM python: 3.7, я использую ubuntu? альпийский? какая ОС?

Mr-Programs 30.05.2019 10:46

@ Mr-Programs на hub.docker.com/_/python вы видите, что 3.7 является «общим тегом» с 3.7.3-stretch и 3.7.3-windowsservercore-1809 (и двумя другими windowsservercore). Итак, в Docker на Linux python:3.7 будет использовать 3.7.3-stretch - это текущая стабильная версия Debian (у нее кодовое имя «Stretch»).

Messa 30.05.2019 12:20

По состоянию на июль 2019 года стабильной версией Debian является Debian 10 под кодовым именем buster. Поэтому лучший выбор с точки зрения совместимости и стабильности - python:3.7-buster. Для Python 3.8 есть только изображение с нарушением правил, но не с растянутым изображением.

Erik Kalkoken 10.01.2020 15:00

TWTMC: для пользователей, использующих библиотеки машинного обучения / науки о данных, некоторые из основных пакетов (SciPy и Scikit-Learn) могут представлять некоторые проблемы при использовании изображений alpine. Иногда необходимо перейти к изображениям версий, чтобы избежать ошибок из-за отсутствия библиотек.

Flavio 22.01.2020 08:39

Обратите внимание, что в нижней части Python Oficial Docker Hub вы получите полезные подсказки о том, что находится в репозитории.

Stretch, Apline, Buster относятся к базовая ОС, который использует контейнер.

Стрейч и Бастер - это последовательные версии Debian, а Альпийский - минималистичная версия для Linux, основанная на musl и BusyBox.

разница в размере является значительным, увеличиваясь до 30x от Alpine к другим, но компромиссы следует принимать во внимание как от лучшего сообщества к лучшим размерам и производительности.

Также примите во внимание, что ваш контейнер должен быть установлен и насколько он может быть минималистичным.

Другие вопросы по теме