
To jest drugi artykuł z serii artykułów, w którym zostaną omówione ograniczenia dotyczące pobierania obrazów kontenerów.
W Szczegółowo omówiliśmy obrazy przechowywane w Docker Hub, największym rejestrze obrazów kontenerów. Piszemy o tym, aby lepiej zrozumieli Państwo, jak nasze zaktualizowane warunki korzystania wpłyną na zespoły programistyczne korzystające z Docker Hub do zarządzania obrazami kontenerów i potokami CICD.
O ograniczeniach dotyczących częstości pobierania ogłosiliśmy wcześniej w naszych . Dokładniej omówimy ograniczenia dotyczące częstości, które wejdą w życie 1 listopada 2020 roku:
Bezpłatny plan taryfowy, użytkownicy anonimowi: 100 pobrań co 6 godzin
Bezpłatny plan taryfowy, użytkownicy autoryzowani: 200 pobrań co 6 godzin
Plan taryfowy Pro: bez ograniczeń
Plan taryfowy Team: bez ograniczeń
Częstość pobrań ze strony Docker definiowana jest jako liczba żądań manifestów do Docker Hub. Ograniczenia częstotliwości pobierania obrazów zależą od typu konta żądającego obraz, a nie od typu konta właściciela obrazu. Dla użytkowników anonimowych (nieautoryzowanych) częstość pobierania jest powiązana z adresem IP.
N.B. Więcej szczegółów i najlepszych praktyk znajdą Państwo . Co więcej, mogą Państwo uczestniczyć w nim, kiedy będą mieli ochotę — zarówno czasowo, jak i nastrojowo.
Otrzymujemy pytania od klientów i społeczności dotyczące warstw obrazów kontenerów. Nie uwzględniamy warstw obrazu w ograniczeniach częstotliwości pobierania, ponieważ ograniczamy pobieranie manifestów, a liczba warstw (żądań blobów) w tym momencie nie jest ograniczona. Ta zmiana opiera się na opiniach społeczności, aby uczynić to bardziej przyjaznym dla użytkowników, tak aby użytkownicy nie musieli liczyć warstw w każdym używanym obrazie.
Szczegółowa analiza częstotliwości pobierania obrazów Docker Hub
Poświęciliśmy dużo czasu na analizę pobierania obrazów z Docker Hub, aby zidentyfikować przyczynę ograniczenia prędkości oraz jak należy je wprowadzać. To, co zobaczyliśmy, potwierdziło, że praktycznie wszyscy użytkownicy pobierają obrazy z przewidywalną prędkością dla standardowych procesów roboczych. Istnieje jednak znaczący wpływ niewielkiej liczby anonimowych użytkowników, na przykład około 30% wszystkich pobrań pochodzi tylko od 1% anonimowych użytkowników.

Nowe ograniczenia opierają się na tej analizie, więc większość naszych użytkowników nie ucierpi. Ograniczenia te zostały wprowadzone, aby odzwierciedlić typowe użytkowanie przez programistów — naukę Docker, rozwijanie kodu, tworzenie obrazów itp.
Wsparcie dla programistów w lepszym zrozumieniu ograniczeń częstotliwości pobierania
Teraz, gdy zrozumieliśmy wpływ oraz gdzie powinny być granice, musieliśmy określić techniczne warunki działania tych ograniczeń. Ograniczanie pobierania obrazów z rejestru Docker jest dość trudne. Nie znajdziesz API do pobierania w opisie rejestru — po prostu go nie ma. W rzeczywistości pobieranie obrazu jest połączeniem zapytań o manifest i blob w API, a te są wykonywane w różny sposób, w zależności od stanu klienta i żądanego obrazu.
Na przykład, jeśli już masz obraz, Docker Engine wyśle zapytanie o manifest, zrozumie, że ma już wszystkie potrzebne warstwy na podstawie odebranego manifestu, po czym zatrzyma się. Z drugiej strony — jeśli pobierasz obraz, który wspiera kilka architektur, zapytanie o manifest zwróci listę manifestów obrazów dla każdej obsługiwanej architektury. Następnie Docker Engine wyśle kolejne zapytanie o manifest dotyczące konkretnej architektury, na której działa, w odpowiedzi otrzyma listę wszystkich warstw obrazu. Potem będzie żądał każdej brakującej warstwy (blob).
N.B. Szerzej na ten temat można przeczytać na , w którym omówimy wszystkie jego narzędzia: od podstawowych abstrahacji po parametry sieci, niuanse pracy z różnymi systemami operacyjnymi i językami programowania. Poznasz technologię i zrozumiesz, gdzie i jak najlepiej używać Docker.
Okazuje się, że pobieranie obrazu to tak naprawdę jedno lub dwa zapytania do manifestu, a także od zera do nieskończoności — zapytania do warstw (blob). Historycznie Docker śledził częstotliwość pobierania na podstawie warstw, ponieważ jest to najbardziej związane z używaniem pasma. Niemniej jednak, wsłuchaliśmy się w społeczność, że jest to trudniejsze, ponieważ należy śledzić liczbę żądanych warstw, co prowadzi do ignorowania najlepszych praktyk dotyczących pracy z Dockerfile, a także jest mniej intuicyjne dla użytkowników, którzy chcą po prostu pracować z rejestrem, nie wgłębiając się w szczegóły.
Dlatego ograniczamy liczbę zapytań na podstawie zapytań do manifestów. To jest bezpośrednio związane z pobieraniem obrazów, co jest łatwe do zrozumienia dla użytkowników. Jest jednak jeden drobny szczegół — jeśli próbujesz pobrać obraz, który już masz, zapytanie i tak zostanie policzone, nawet jeśli nie będziesz pobierać warstw. W każdym razie mamy nadzieję, że ta metoda ograniczania częstotliwości pobierania będzie zarówno sprawiedliwa, jak i wygodna dla użytkowników.
Czekamy na twoje opinie
Będziemy monitorować ograniczenia i wprowadzać odpowiednie poprawki na podstawie typowych przypadków użycia, aby upewnić się, że ograniczenia pasują do każdego typu użytkowników, a w szczególności postaramy się nigdy nie przeszkadzać programistom w wykonywaniu ich pracy.
Śledź komunikaty w nadchodzących tygodniach, będzie jeszcze jeden artykuł na temat konfiguracji CI i systemów operacyjnych w świetle tych zmian.
Na koniec, w ramach wsparcia społeczności programistów oprogramowania z otwartym kodem źródłowym, do 1 listopada wprowadzimy nowe plany taryfowe dla oprogramowania open source. Aby ubiegać się o nie — należy wypełnić formularz .
Aby uzyskać więcej informacji o ostatnich zmianach w warunkach świadczenia usług, skontaktuj się z .
Ci, którzy muszą podnieść limity częstotliwości pobierania obrazów, Docker oferuje nielimitowane pobieranie obrazów jako funkcję . Jak zawsze, czekamy na opinie i pytania .
Źródło: habr.com
