Доброе утро, камрады и читатели.
Так как возникло много не совсем корректных вопросов после закрытия Docker Hub, что там хранили пользователи и почему - я хочу попробовать в одном сообщении рассказать что это за сервис. Думаю, что многое станет понятнее. Будет немного длинный текст, но это необходимо для понимания контекста.
Давным давно (лет 20 назад) большую часть программ писали для обычных компьютеров, которыми пользуются люди на домашних или офисных компьютерах. Большая часть писалась под Windows, Mac OS. Пользователи и администраторы более-менее научились с ними работать. Отличительной особенностью таких программ являлось более-менее предсказуемое окружение (в виде операционной системы, настроек пользователя типа "язык", "форматы даты и чисел", "часовой пояс" и других), простота перезапуска программы в случае сбоя, простота установки и настройки.
Несколько позднее (но тоже "давно") разработчики и обычные пользователи массово пошли в "веб": скорость и пропускная способность интернета возросли кратно, большое количество людей стало создавать сервисы, сайты. Не то, чтобы их не создавали до этого - просто пошел действительно массовый наплыв разработчиков в этот сегмент. И вот здесь возник ряд чисто технических проблем.
- Во-первых, окружение на серверах отличается гораздо больше, чем на "десктопах в начале 2000-х".
- Во-вторых, сайт предполагает одновременную работу нескольких пользователей с разными языками, настройками и так далее.
- В-третьих, операционных систем огромное количество, а вариаций локальных настроек - на несколько порядков больше (больше сотни комбинаций можно насобирать). Эти проблемы все решаемы, но для этого нужны инженерные кадры с наличествующим у них на эти задачи временем. А с этим был и есть большой дефицит.
- В-четвертых - чаще стали возникать проблемы вида "у программиста всё работает, а у пользователя - нет", так как у программиста на компьютере обязательно устанавливались и настраивались дополнительные подсистемы и библиотеки, необходимые ему для работы.
Итак, "на рынок" хлынул поток программ, которые отказывались нормально работать при попытке их запуска. Индустрии понадобилась некоторая унификация - чтобы можно было хоть как-то запускать программы. Одним из успешных подходов стал docker - по сути, внутри компьютера запускается другой мини-компьютер с ограниченными и только необходимыми ему для работы подсистемами, и уже в этом мини-компьютере запускается написанная программа (вебсайт, сервис или что-то ещё). И внутри этой мини-системы ("контейнера") уже программист на этапе разработки раскладывает конфигурацию нужным ему способом, устанавливает недостающие программы и так далее. Это позволило убрать вариативность рабочего окружения и программы стали работать одинаково как у программиста, так и на сервере. Теперь можно было в 3 строки в текстовом файле "поднять сайт". И не надо учиться администрировать Linux-сервера, работать с консолью и так далее. Теперь в "программисты" хлынула вторая волна - люди, которые начали комбинируя разные программы (базы данных, нейросети по распознаванию лиц, веб-сайты и прочее) создавать новые программы.
И здесь серьезных проблем возникло ровно три: откуда-то надо брать "базовый образ системы", где-то надо хранить собранные образы своих программ, сами программы от этого лучше не становятся и постоянно ломаются. Для решения первых двух компания Docker предоставила площадку (сначала бесплатную, а потом за регистрацию и некоторую оплату - когда нагрузка стала непомерной), а для решения третьей - компания Google, которая с самого своего основания отлично умеет работать с постоянно-ломающейся инфраструктурой, разработала специальный сервис Kubernetes (K8S). Последний - в случае неисправности оборудования умеет "скачать образ заново и запустить его с прежними настройками" (
и скачивать он его будет, например, с того самого Docker Hub).
Теперь к текущим событиям. Так как многие "программисты" и "администраторы сайтов", которые не очень-то на самом деле умеют реально программировать, поддерживать инфраструктуру, прорабатывать архитектуру компании, до самого последнего момента не думают хотя бы на полшага вперед (раз) и при любой проблеме бегут на форум спрашивать "как всё починить" (два), ибо сами не умеют и даже примерно не знают, как с этим работать, то при подобном отключении сервиса сразу в интернете возникает лавина сообщений вида "всё пропало", "ни у кого ничего не работает". И самое главное - перезагрузка сервера не поможет (а только ухудшит ситуацию - так как образы надо будет скачать заново).
В нормальных организациях никто не использует исходные образы с docker-а, а собирает их самостоятельно, размещает на своих серверах и никого "чужого" на эти сервера не пускает. Дело это не сильно сложное и не очень ресурсо-затратное. Поэтому "неопытный молодняк" воет на просторах интернета, а обычные нормальные парни отметили про себя: "А он разве не был заблокирован раньше? Ну и ладно - всё равно им и не пользовался."
Почему я написал этот весь текст? Дело в том, что Docker Hub - не единственная, не первая, не последняя базовая инфраструктура от западных компаний, которая получила широкое распространение.
Но у тех, кто серьезно подходит к своей работе, зависимость от "чужого" всегда минимальна. Даже, если идет вал сообщений - зачастую он идет не от специалистов, а от любителей.
P.S. Я постарался рассказать упрощенно и не включил в текст нюансы вроде того, что контейнеры и виртуализация (компьютерная и сетевая) были уже в 2000-х, программные watchdog-и на сервисах тоже больше 15 лет в индустрии используются, конкретные решения не ограничиваются теми, что я указал выше - углубленное обсуждение с техническими подробностями при желании я предлагаю вести в ветке
IT в России и мире в реалиях мирового кризиса , а здесь оставить только понятные вещи.
Отредактировано: Oleg K. - 31 май 2024 20:25:30