
Това е втората статия от серия статии, в която ще разгледаме ограниченията при изтегляне на образи на контейнери.
В Подробно разгледахме образите, съхранявани в Docker Hub, най-голямото регистриране на образи на контейнери. Пишем за това, за да можете по-добре да разберете как нашите обновени условия за обслужване ще се отразят на екипите разработчици, които използват Docker Hub за управление на образи на контейнери и CICD потоци.
Об ограниченията по честота на изтегляне беше обявено по-рано в нашите . По-подробно ще разгледаме ограниченията по честота, които влизат в сила от 1 ноември 2020 г.:
Безплатен тарифен план, анонимни потребители: 100 изтегляния на всеки 6 часа
Безплатен тарифен план, регистрирани потребители: 200 изтегляния на всеки 6 часа
План Pro: без ограничения
План Team: без ограничения
Честотата на изтегляния от Docker се определя като брой заявки за манифести към Docker Hub. Ограниченията по честота на изтегляне на образи зависят от типа на акаунта, който иска образа, а не от типа на акаунта на собственика на образа. За анонимни (негистрирани) потребители честотата на изтегляне е свързана с IP адреса.
Забележка. Повече нюанси и добри практики ще получите . И вие можете да го преминете, когато ви е удобно — както по време, така и по настроение.
Получаваме въпроси от клиенти и общността относно слоевете на образи на контейнери. Не взимаме предвид слоевете на образа при ограничаването на честотата на изтегляне, тъй като ограничаваме изтеглянето на манифести, а броят на слоевете (заявки за blob) в момента не е ограничен. Това изменение е основано на отзиви от общността, за да го направи по-дружелюбно към потребителите, така че потребителите да нямат нужда да броят слоевете на всеки образ, който използват.
Подробен анализ на честотите на изтегляне на образи в Docker Hub
Ние прекарахме много време, анализирайки изтеглянето на образи от Docker Hub, за да определим причините за ограничението на скоростта, а също и как точно трябва да се прилагат тези ограничения. Това, което видяхме, потвърди, че всъщност всички потребители изтеглят образи с предсказуема скорост за стандартни работни процеси. Въпреки това, има забележимо влияние от малък брой анонимни потребители; например, около 30% от всички изтегляния идват само от 1% анонимни потребители.

Новите ограничения се основават на този анализ, така че повечето от нашите потребители няма да бъдат засегнати. Тези ограничения са направени така, че да отразяват обикновеното използване от разработчиците - изучаване на Docker, разработване на код, създаване на образи и т.н.
Помощ на разработчиците за по-добро разбиране на ограниченията на скоростта на изтегляне
Сега, когато разбираме влиянието и къде трябва да бъдат границите, трябваше да определим техническите условия за прилагането на тези ограничения. Ограничаването на изтеглянето на образи от Docker registry е съвсем сложно. Няма да намерите API за качвания в описанието на registry - то просто не съществува. Всъщност, изтеглянето на образ представлява комбинация от заявки за манифест и блобове в API, а те се изпълняват по различен начин, в зависимост от състоянието на клиента и запитвания образ.
Например, ако вече имате образ, Docker Engine ще направи заявка за манифест, ще разбере, че вече притежава всички необходими слоеве на основе получен манифест и след това ще спре. От друга страна - ако изтегляте образ, който поддържа няколко архитектури, заявката за манифест ще върне списък с манифести на образи за всяка поддържана архитектура. След това Docker Engine ще направи още една заявка за манифест за конкретната архитектура, на която работи, и в отговор ще получи списък на всички слоеве на образа. След това той ще запитва всеки липсващ слой (блоб).
Забележка. По-широко тази тема е разгледана в , в който ще разгледаме всичките му инструменти: от основните абстракции до параметрите на мрежата, нюансите в работата с различни операционни системи и програмни езици. Ще се запознаете с технологията и ще разберете къде и как най-добре да използвате Docker.
Получава се, че изтеглянето на образа всъщност е един или два записа на манифеста, а също и от нула до безкрайност — заявки за слоеве (blob). Исторически, Docker проследяваше честотата на изтегляне на базата на слоеве, тъй като това е най-свързано с използването на честотна лента. Въпреки това, ние се вслушахме в обществото, че е по-трудно, защото трябва да проследим заявеното количество слоеве, което ще води до игнориране на добрите практики при работа с Dockerfile, а също така е интуитивно по-трудно за потребителите, които искат просто да работят с registry, без да се задълбочават в детайлите.
Така че ограничаваме броя на запитванията на базата на запитванията към манифестите. Това е пряко свързано с изтеглянето на образи, което е лесно разбираемо за потребителите. Има обаче малък нюанс — ако опитате да изтеглите образ, който вече имате, заявката все пак ще бъде отчетена, дори и да не изтегляте слоевете. Във всеки случай надеждата ни е, че този метод за ограничаване на честотата на изтегляне ще бъде и справедлив, и удобен за потребителите.
Очакваме вашите отзиви
Ще следим ограниченията и ще правим съответните корекции на базата на стандартните случаи на използване, за да се уверим, че ограниченията отговарят на всеки вид потребители и в частност ще се постараем никога да не пречим на разработчиците да изпълняват работата си.
Следете съобщенията в следващите седмици, ще има още една статия за настройката на CI и производствени системи в светлината на тези промени.
Накрая, в контекста на подкрепа на общността от разработчици на софтуер с отворен код, до 1 ноември ще предоставим нови тарифни планове за отворен код. За да подадете заявка — трябва да попълните формуляр .
За допълнителна информация относно последните промени в условията на обслужване, моля, свържете се с .
На онези, които трябва да увеличат ограниченията на честотата на изтегляне на образи, Docker предлага неограничено изтегляне на образи като функция . Както винаги, очакваме обратна връзка и въпроси .
Източник: habr.com
