Oleg K. 09:52
Доброе утро, камрады и читатели.
Так как возникло много не совсем корректных вопросов после закрытия Docker Hub, что там хранили пользователи и почему - я хочу попробовать в одном сообщении рассказать что это за сервис. Думаю, что многое станет понятнее. Будет немного длинный текст, но это необходимо для понимания контекста.
Давным давно (лет 20 назад) большую часть программ писали для обычных компьютеров, которыми пользуются люди на домашних или офисных компьютерах. Большая часть писалась под Windows, Mac OS. Пользователи и администраторы более-менее научились с ними работать. Отличительной особенностью таких программ являлось более-менее предсказуемое окружение (в виде операционной системы, настроек пользователя типа "язык", "форматы даты и чисел", "часовой пояс" и других), простота перезапуска программы в случае сбоя, простота установки и настройки.
Несколько позднее (но тоже "давно") разработчики и обычные пользователи массово пошли в "веб": скорость и пропускная способность интернета возросли кратно, большое количество людей стало создавать сервисы, сайты. Не то, чтобы их не создавали до этого - просто пошел действительно массовый наплыв разработчиков в этот сегмент. И вот здесь возник ряд чисто технических проблем.
- Во-первых, окружение на серверах отличается гораздо больше, чем на "десктопах в начале 2000-х".
- Во-вторых, сайт предполагает одновременную работу нескольких пользователей с разными языками, настройками и так далее.
- В-третьих, операционных систем огромное количество, а вариаций локальных настроек - на несколько порядков больше (больше сотни комбинаций можно насобирать). Эти проблемы все решаемы, но для этого нужны инженерные кадры с наличествующим у них на эти задачи временем. А с этим был и есть большой дефицит.
- В-четвертых - чаще стали возникать проблемы вида "у программиста всё работает, а у пользователя - нет", так как у программиста на компьютере обязательно устанавливались и настраивались дополнительные подсистемы и библиотеки, необходимые ему для работы.
Итак, "на рынок" хлынул поток программ, которые отказывались нормально работать при попытке их запуска. Индустрии понадобилась некоторая унификация - чтобы можно было хоть как-то запускать программы. Одним из успешных подходов стал docker - по сути, внутри компьютера запускается другой мини-компьютер с ограниченными и только необходимыми ему для работы подсистемами, и уже в этом мини-компьютере запускается написанная программа (вебсайт, сервис или что-то ещё). И внутри этой мини-системы ("контейнера") уже программист на этапе разработки раскладывает конфигурацию нужным ему способом, устанавливает недостающие программы и так далее. Это позволило убрать вариативность рабочего окружения и программы стали работать одинаково как у программиста, так и на сервере. Теперь можно было в 3 строки в текстовом файле "поднять сайт". И не надо учиться администрировать Linux-сервера, работать с консолью и так далее. Теперь в "программисты" хлынула вторая волна - люди, которые начали комбинируя разные программы (базы данных, нейросети по распознаванию лиц, веб-сайты и прочее) создавать новые программы.
И здесь серьезных проблем возникло ровно три: откуда-то надо брать "базовый образ системы", где-то надо хранить собранные образы своих программ, сами программы от этого лучше не становятся и постоянно ломаются. Для решения первых двух компания Docker предоставила площадку (сначала бесплатную, а потом за регистрацию и некоторую оплату - когда нагрузка стала непомерной), а для решения третьей - компания Google, которая с самого своего основания отлично умеет работать с постоянно-ломающейся инфраструктурой, разработала специальный сервис Kubernetes (K8S). Последний - в случае неисправности оборудования умеет "скачать образ заново и запустить его с прежними настройками" (и скачивать он его будет, например, с того самого Docker Hub).
Теперь к текущим событиям. Так как многие "программисты" и "администраторы сайтов", которые не очень-то на самом деле умеют реально программировать, поддерживать инфраструктуру, прорабатывать архитектуру компании, до самого последнего момента не думают хотя бы на полшага вперед (раз) и при любой проблеме бегут на форум спрашивать "как всё починить" (два), ибо сами не умеют и даже примерно не знают, как с этим работать, то при подобном отключении сервиса сразу в интернете возникает лавина сообщений вида "всё пропало", "ни у кого ничего не работает". И самое главное - перезагрузка сервера не поможет (а только ухудшит ситуацию - так как образы надо будет скачать заново).
В нормальных организациях никто не использует исходные образы с docker-а, а собирает их самостоятельно, размещает на своих серверах и никого "чужого" на эти сервера не пускает. Дело это не сильно сложное и не очень ресурсо-затратное. Поэтому "неопытный молодняк" воет на просторах интернета, а обычные нормальные парни отметили про себя: "А он разве не был заблокирован раньше? Ну и ладно - всё равно им и не пользовался."
Почему я написал этот весь текст? Дело в том, что Docker Hub - не единственная, не первая, не последняя базовая инфраструктура от западных компаний, которая получила широкое распространение. Но у тех, кто серьезно подходит к своей работе, зависимость от "чужого" всегда минимальна. Даже, если идет вал сообщений - зачастую он идет не от специалистов, а от любителей.
P.S. Я постарался рассказать упрощенно и не включил в текст нюансы вроде того, что контейнеры и виртуализация (компьютерная и сетевая) были уже в 2000-х, программные watchdog-и на сервисах тоже больше 15 лет в индустрии используются, конкретные решения не ограничиваются теми, что я указал выше
Комментарии
собсно как обычно
"... что контейнеры и виртуализация (компьютерная и сетевая) были уже в 2000-х". Даже раньше. Я столкнулся с этим еще в начале 90-х. На ЕС-1066 была развернута и работала подсистема HP-UX. Это нам подарок сделало одно профильное НИИ. Знали что у нас разрабатываются программы для этой среды.
Это больше на полноценную виртуальную машину похоже. А первые контейнеры - это скорее jail из фряхи.
jail активно использовал году в 98-м, емнип. Как средство изоляции вполне себе.
Технически, контейнеры это развитие идеи chroot, которая в UNIX была ещё с 70х. Виртуальные машины тоже древняя технология времён мейнфреймов. А вообще, рассказывать про докер не упоминая контейнеризацию это примерно как приписать компании Тойота изобретение автомобиля.
Это как можно уточнить?
Архитектурно это разные машины ЕС-1066 и сервера под HP-UX (использовался на процессорах Motrola и PA-RISC если про те времена говорить, потом появился Intel Itanium), соответственно должна быть полная эмуляция железа, чего по ЕС-1066 не было, либо портировать ОС HP-UX под платформу EC-1066 что конечно возможно если сделать реинжиниринг ОС поскольку в открытых исходниках данная ОС не распространялась.
Если я всё правильно понял, то отключение от Docker Hub равноценно отключению от инстаграмма. Не смертельно, я считаю.
Даже близко не равноценно, когда у тебя в компании полностью ложится CI инфраструктура и желание посмотреть на жопы в инстаграме
А с какого она должна ложиться, когда всё лежит во внутренних репо, за содержимым которых бдит СИБ. Чужие докер-образы на проде использовать это вообще суицид - мало ли что туда и кто напихал?
Не всё лежит во внутренних репо. Образы имеют несколько стейджей, из которых ну точно хоть один есть не самописный. Врать нет необходимости
Чёрт его знает, как-то оно же проходит сертификацию у тащмайора.
В нормальных компаниях CI завязана на собственную registry. Тем более, что это бесплатно и сравнительно несложно. Создание новых образов для контейнеров - да, могут быть некоторые сложности. Но переход на новые версии систем не такое частое событие, чтобы это стало заметно достаточно быстро.
Собственный registry... Хм... Дайте угадаю - это про просто кэш оригинального реестра. Это, конечно, лучше чем без него. Но и выдавать это за мега решение - тоже шутка
У нормальных людей вся сборка через прокси идет, потому что банально так быстрее.
С чего это быстрее?
Как это устроено у нас (собираем на Java):
Есть внутренний гитлаб, к которому подключены несколько десятков runner-ов, занимающихся сборкой.
Есть Artifactory с настроенным проксированием как докер-образов, так и jar-ов (библиотеки на Java)
Всё это живет в одном датацентре с толстенными каналами связи железок друг с другом.
Соответственно, все сетевые операции выполняются внутри одного ДЦ и качается всё практически моментально.
До оригинального докерхаба доступ в такой схеме вообщеё не нужен. Более того, на раннерах он вообще принудительно отключен, они живут в зоне, из которой фаерволл запрещает доступ на любой ресурс кроме artifactory и кластера Kubernetes, на которые будет разворачиваться приложение.
P.S. Там ниже про свои образы было: так вот, мы сначала eclipse temurin v17 использовали, а потом пришли чуваки из безопасности и вынудили нас перейти на ими собственноручно собранные Appsec Images, из которых вырезано вообще всё кроме минимума, нужного для сборки сервисов.
А ну понятно. Я то думал, что речь про доступ через прокси к оригинальному хабу.
Ну, такой, значит бизнес. Есть и "бизнес" на инстаграме, и даже очень развитый.
У меня в городе есть ресторан, где меню выдают в виде ссылки на Инстаграм. До сих пор.
P. S. Думаю, те, кто пользовался докерхабом, также просто взгромоздят на сервер ещё и VPN.
У многих это сложилось исторически, и не всегда по техническим причинам.
Это да, докер экономит в этом плане уйму времени. У меня ещё до докера был свой сервер, ничего особенного -- веб-страница, облачное хранилище, почта с веб-мордой и ещё пара сервисов по мелочам типа ssh, vpn и прочего. Настраивалось долго и упорно, плюс перенести это всё на другой сервер -- задача очень нетривиальная и сопряжённая с рисками, проще с нуля всё сделать.
С докером такую же комбинацию сервисов поднял за пол-дня, а перенос на другой сервер заключается в простом копировании папки, где лежат тома и конфигурационный файл .
Так ведь и нет никакого воя. У кого был какой-нибудь инфобез - образы заранее выкачивали/проверяли/сами собирали и хранили в своих registry.
Кому пофиг - добавят зеркала, скачают через впн.
Зеркала - это та еще дырища, сейчас каждое второе будет со зловредами в образах.
Понятно что дырища, но нет у нас госхаба...
ну таки свой поднимите реджистри какие проблему то, туда проверенные образы закиньте, ну да геморойней чем раньше... но и раньше так делали на более менее тяжелых проектах, а по поводу версий ну знаете апнуть версию в рабочей архитектуре в проме надо подумать раз сто.
Проблемы никакой
Так ВПН/прокси есть, это лучше, чем не пойми откуда качать.
Таких организаций не существует. Никто в здравом уме не будет пересобирать любой образ с нуля. Это ещё объяснимо для production образов, но в любой компании не будет 100% своих лично собранных образов. Да чё уж там и 5% не будет, тк это тупо нерационально.
Блин, мне платит несуществующая организация. Круто.
Текстовый редактор у вас в организации тоже самописный?
Когнитивные способности (особенно по чтению текста) неплохо бы развить выше уровня младшей ясельной группы, прежде чем писать комментарии.
Начни с себя, клоун
Давайте по делу писать.
Есть что полезное по теме сказать?
А тебе?
Круто, мог бы и не врать так нагло.
По крайней мере в "нормальной организации" эти (собранные другими) образы будут лежать на своём внутреннем сервере, а не скачиваться с чужого.
рукожоп пытается оправдаться за свое рукожопие
а ему ещё и з/п платили...
все остальные даже не заметили "закрытия" )
Лень наказуема
Самое хреновое это то что вроде бы адекватные люди , стоящие за этим сервисом сразу превратились в 💩
https://huecker (.) io
на здоровье
С малварью и троянами!
Как будто в изначальном хабе их не было.
Есть ещё пара моментов. Докер (без кубера) позволяет быстро поставить и запустить прототип. Сайта, сервиса, проверить новую версию уже имеющегося и подобное. А кроме того, некоторое серверное (открытое!) ПО официально поставляется в докер-образах через докер хаб. Да, можно и из исходников, но рекомендуемый самим создателем путь - докер. И вот тут обвинять пользователей - некорректно.
P.S. А через зеркала разной дряни сейчас попрёт, да...
Кто верит, что в зарубежном ПО изначально нет дряни, поставит VPN и продолжит им пользоваться.
ну покажите отечественное ПО, предоставляющее хотя бы похожий функционал (не буду даже список приводить, потому как это практически всё, что распространяется через докер), не говоря уж о бесплатно
Если оно исключительно через докер, то гарантировать отсутствие вредоносов в нём практически невозможно.
Если исходники опубликованы, то почти наверняка есть образы докера для Астры или Альта.
Давайте хоть пример, о чём речь? Мне пока не надо было ПО, которое существует только в докерхабе.
Я сам дочь офицера, и поверьте мне, с использованием сторонних образов, не всё так однозначно, всегда найдутся кейсы когда это оправдано.
Например для нужд тестирования всякого opensource, самому собирать образ какого-нибудь скажем Redis это явно избыточно. Ну и допустим соберу я свой образ, а мне же его теперь и хранить где-то надо, чтобы какой-нибудь Джо с Техасчины, когда пул реквест в мою библиотеку засылает, мог нормально у себя на машинке тесты сначала прогнать, и тут получается просто собрать образ недостаточно, нужно ещё свой репозитарий поднять и оплачивать хостинг для него, что достаточно проблематично, с учетом того что большинство opensource проектов никаких денюшек не приносят.
И я думаю такая же хрень, с бесплатными курсами и документацией.
На текущий момент проблем нет с отключением DockerHub, кроме как зеркала настроить.
Западный софт могут перекрыть в любой момент. Нужно свою виртуализацию разрабатывать.
Докер и контейнеры в целом - это не виртуализация.
Да расслабились все, привыкли что все работает из коробки. Только месяц назад затянул все базовые образы ОС которые мы используюем для деплоя в свой регистри, а тут раз, и перекрыли. Не сказать что это какая нибудь проблема, все что нужно, можно скачать к себе через впн и запушить в свое хранилище если оно есть. Но для различных поделок типа прототипов на гитхабе, неприятность. Часто для функциональных автотестов пишут скрипты предполагающие использование сервиса из стокового образа.
Хотя о чем это я, надо бы уже искать альтернативу гитхабу и мигрировать туда потихоньку.
Страницы