Technologiczne, Gadżety, Telefony Komórkowe, Pobieranie Aplikacji!

Co to jest kontener? Jak to działa i jakie są jego struktury?

Kontenery to pakiety oprogramowania dostarczane w ramach standardowych jednostek w celu opracowywania, transportu lub korzystania z usług. W tym artykule sprawdziliśmy dwa kontenery: Docker i Google. Fwe próbowało bezpośrednio przetłumaczyć oryginalne teksty tych firm w zakresie ich usług kontenerowych. W pierwszej części rozmawialiśmy o kontenerach Dockera, a w drugiej części tego artykułu o kontenerze Google (Corinth).

Kontenery dokowane

Kontener to standardowa jednostka pakietów oprogramowania z pełną relacją pomiędzy kodem i jego zależnościami. Dlatego można go przesyłać z jednego środowiska komputerowego do drugiego z dużą szybkością i niezawodnością. Docker jest jednym z dostawców kontenerów. Firma ta zaprojektowała lekki, niezależny i wykonywalny obraz kontenera, którego można używać jednocześnie w przypadku kodów, programów wykonawczych, narzędzi systemowych, bibliotek i ustawień. Miał osobę na utrzymaniu.

Kontener, czasami nazywany obrazem kontenera, staje się nośnikiem informacji w czasie wykonywania i po uruchomieniu silnika produktu Docker. Kontenera tego można używać zarówno z oprogramowaniem Linux, jak i Windows, a zawartość oprogramowania jest taka sama dla obu systemów operacyjnych, niezależnie od rodzaju wykorzystywanej infrastruktury. Kontenery oddzielają oprogramowanie od środowiska, w którym się znajduje. Dzięki temu mamy pewność, że będą one działać dobrze i jednolicie, pomimo różnic pomiędzy środowiskiem deweloperskim i wykonawczym.

Kontenery Docker, które można uruchomić w silniku Docker, mają następujące funkcje:

  • Standard: Docker zapewnił podstawowy standard, dzięki czemu można je uruchamiać w dowolnym miejscu w formie przenośnej.
  • Lekki: ten kontener dzieli zasoby urządzenia z zainstalowanym systemem operacyjnym, więc nie ma potrzeby instalowania żadnego innego systemu operacyjnego dla każdego z nich, co zwiększa wydajność systemu. Mają powstać agenci, w związku z czym zmniejszy się liczba licencji operacyjnych wymaganych dla systemu operacyjnego.
  • Bezpieczeństwo (bezpieczne): Oprogramowanie jest umieszczane w kontenerach w całkowicie bezpieczny sposób, a Docker domyślnie stworzył dla nich również potężne możliwości izolacji.

Kontenery dostarczane przez Dockera mogą być używane na dowolnym systemie, włączając Linux, Windows, centra danych, centra przetwarzania w chmurze, centra nie korzystające z serwerów (ServerLess) itp.

Docker Engine to kontener typu open source wprowadzony na rynek w 2013 roku.

Kontener ten wprowadził na rynek główne koncepcje kontenera i wykorzystuje je, szczególnie w systemie operacyjnym Linux. Połączenie kontenerów Docker i systemów operacyjnych Linux jest początkowo znane jako Cgroups i NameSpace. Technologie wykorzystywane przez Dockera do tworzenia kontenerów są unikalne. Koncentrują się na potrzebach i wymaganiach programistów, użytkowników systemów czy zależnościach infrastruktury wymaganych w niezależnym oprogramowaniu.

Sukces w świecie Linuksa spowodował, że nawiązano współpracę z firmą Microsoft przy tworzeniu specjalnych kontenerów dla systemu operacyjnego Windows Server (współpraca ta nazywana jest w niektórych przypadkach kontenerami Windows Docker).

Wszystkie technologie użyte w konstrukcji projektów Docker są typu open source i są wykorzystywane przez wiele centrów danych i dostawców usług w chmurze na całym świecie; ci dostawcy usług używają kontenerów Docker do świadczenia usług IaaS na platformie chmurowej. Ponadto firma ta jest pierwszym dostawcą bezserwerowego frameworku kontenerowego, który wykorzystuje w tych frameworkach technologię kontenerową Dockera.

Porównanie kontenerów i maszyn wirtualnych

Kontenery i maszyny wirtualne mają podobieństwa w izolowaniu zasobów i przydzielaniu ich konkretnym użytkownikom, ale działają zupełnie inaczej pod względem funkcjonalności. Ta różnica wynika z tego, że kontenery przydzieliły system operacyjny użytkownikom, zamiast przypisywać użytkownikom sprzęt. Kontenery mogą działać w dowolnym miejscu bez konieczności instalacji (przenośne) i charakteryzują się wyższą wydajnością niż systemy maszyn wirtualnych.

Kontenery

Kontenery są abstrakcyjnie umieszczane na górnej warstwie pakietów kodu i zależności. Możliwe jest uruchomienie wielu kontenerów na tej samej maszynie, współdzieląc główny system operacyjny z innymi kontenerami, z których każdy działa w izolowanej przestrzeni użytkownika. Kontenery zajmują mniej miejsca niż maszyny wirtualne, a często ich powierzchnia sięga kilkudziesięciu megabajtów, oznacza to, że teraz można wdrożyć więcej kontenerów, a co za tym idzie, mniejsze jest zapotrzebowanie na maszyny wirtualne. Istnieją ich zależne systemy operacyjne.

Wirtualne maszyny

Maszyny wirtualne, w skrócie VM, to abstrakcyjna przestrzeń części sprzętowych na serwerze, która może stworzyć niezależną przestrzeń dla użytkowników. Ich hypervisor umożliwia działanie wielu maszyn wirtualnych na jednym serwerze lub komputerze. Każda maszyna wirtualna składa się z systemu operacyjnego, oprogramowania oraz sekcji binarnych i bibliotecznych, z których każda może osiągnąć dziesiątki gigabajtów. Maszyny wirtualne mają powolne uruchamianie. Gdy kontenery i maszyny wirtualne są używane razem, użytkownicy mają zapewnioną dużą elastyczność w tworzeniu oprogramowania i zarządzaniu nim.

Standardy kontenerowe i ich pionierzy przemysłowi

Docker rozpoczął rewolucję w tworzeniu oprogramowania w 2013 roku. Demokratyzując kontenery oprogramowania, firma ta sprawiła, że ​​wszyscy na tym skorzystali. Początkowo Docker opracował specjalny kontener oparty na systemie operacyjnym Linux. Był przenośny, łatwy i elastycznie rozbudowywalny. Docker stworzył bibliotekę specyficzną dla kontenera o nazwie LibeContainer jako oprogramowanie typu open source i wniósł ogromny wkład w tę dziedzinę na całym świecie. W czerwcu 2015 r. Docker wprowadził definicję obrazu kontenera i wykonanie kodu, obecnie znaną jako Runs, do inicjatywy Open Container Initiative (OCI), aby pomóc w standaryzacji kontenerów. . Kontener ten spowodował szybki rozwój ekosystemów i dojrzałość techniczną w tej branży.

Kontynuowano działania rozwojowe dotyczące kontenerów Docker, które zwróciły uwagę na tę powstającą technologię. W wyniku tego rozwoju firma Docker po raz kolejny udostępniła kolejny ze swoich produktów, CNCF lub Cloud Native Computing Foundation, w wersji open source w 2017 r. Kontener Contained jest obecnie uznawany za wiodący w branży działający kontener, który wykorzystuje technologie stosowane w Runs. W tym kontenerze nacisk położony jest na prostotę, moc i przenośność. Zawiera rdzeń dla kontenerów wykonawczych w silniku Docker.

Ścieżka Google w rozwoju kontenerów

Każda usługa, z której korzystasz w Google, od YouTube po potężną wyszukiwarkę, jest kontenerem. Dzięki konteneryzacji zespoły programistów mogą szybciej wykonywać swoją pracę, wydajniej tworzyć oprogramowanie i móc je wdrażać na niespotykaną dotychczas skalę.

Co tydzień Google tworzy prawie dwa miliardy kontenerów. W ciągu ostatniej dekady Google wiele się nauczył o konteneryzacji przepływu pracy w swoich produktach i teraz nadszedł czas, aby podzielić się tą wiedzą z innymi. W pierwszych dniach, kiedy działalność rozpoczęła się od systemu operacyjnego Linux i Cgroup, firma ta starała się udostępnić wszystkim swoje wewnętrzne narzędzia i zasoby informacyjne pod nazwą projektu Kubernetes. Wszystkie doświadczenia, jakie Google miał w platformach przetwarzania w chmurze i firmach w innych przypadkach (dowolnej wielkości) zostały wszystkim łatwo i w formie konteneryzacji zaprezentowane.

Jakie są cechy specjalnych kontenerów Google?

Kontenery oferują logiczny mechanizm, dzięki któremu oprogramowanie można oddzielić od środowiska, w którym działa i działa abstrakcyjnie. Ten styl izolacji umożliwia łatwiejsze i spójne wdrażanie oprogramowania opartego na kontenerach, niezależnie od środowiska docelowego, w którym się ono znajduje, w tym centrów danych, centrów przetwarzania w chmurze publicznej, a nawet laboratoriów.

Osobisty szczyt programisty, rozwijaj się. Konteneryzacja może stworzyć całkowicie logiczną i prawidłową separację. Dzięki niemu cała uwaga programisty skupiona zostanie na logice oprogramowania i jego zależnościach. Jednocześnie zespół programistów IT może skoncentrować się na tworzeniu oprogramowania i zarządzaniu nim, nie martwiąc się o szczegóły oprogramowania, takie jak wersje oprogramowania lub specjalne konfiguracje oprogramowania.

Osoby korzystające z kontenerów ze środowisk wirtualnych często porównują kontenery do maszyn wirtualnych (VM). Maszyny wirtualne były im znane w przeszłości: maszyny wirtualne są gośćmi dla systemów operacyjnych hostów, takich jak Linux czy Windows, umożliwiając dostęp do sprzętu ich podkategorii w formie wirtualnej. Podobnie jak maszyny wirtualne, kontenery również pozwalają na uruchamianie oprogramowania wraz z jego bibliotekami i zależnościami, a jednocześnie wszystkie znajdują się w zupełnie innym i niezależnym środowisku. Jak wyjaśnimy dalej, istnieją podobieństwa pomiędzy kontenerami jako lekkimi jednostkami dla programistów i specjalnymi funkcjami dla wyspecjalizowanych zespołów IT, które zapewniają im szeroki zakres korzyści.

Dlaczego używa się kontenerów?

W przeciwieństwie do maszyn wirtualnych, które oddzielnie udostępniają użytkownikom części sprzętowe, kontenery są umieszczane na najwyższym poziomie systemu operacyjnego i niezależnie udostępniają użytkownikom funkcje systemu operacyjnego. Kontenery zawierają kilka systemów operacyjnych. Wykonywane są jednocześnie i obok siebie, ale jednocześnie niezależnie. Oznacza to, że kontenery powodują mniejsze obciążenie przetwarzania, ponieważ są bezpośrednio połączone z jądrem systemu operacyjnego. Działają znacznie szybciej i mogą zużywać znacznie mniejszą część pamięci do rozruchu i uruchomienia oprogramowania. Do

W dzisiejszym środowisku dostępne są różne typy kontenerów. Na przykład, jak wyjaśniono w pierwszej części tego artykułu, Docker udostępnił kontener typu open source, na którym działa Google Cloud Platform i działa Google Kubernetes Engine.

Dlaczego w ogóle warto korzystać z piaskownicy?

Kontenery powodują nakładanie się oprogramowania, chyba że wyraźnie je ze sobą połączysz – oznacza to, że nie musimy się martwić konfliktami zależności lub ograniczeniami zasobów – i jasno zdefiniujesz limity zasobów dla każdej usługi. Bardzo ważną kwestią jest tutaj obecność dodatkowej warstwy zabezpieczeń, ponieważ oprogramowanie nie działa bezpośrednio w systemie operacyjnym hosta.

Kompatybilne środowiska

Kontenery pozwalają programistom tworzyć środowiska całkowicie od siebie oddzielone i których zachowanie jest przewidywalne. Kontenery obejmują również zależności oprogramowania wymagane przez oprogramowanie. Mogą one obejmować określone wersje środowisk wykonawczych języka programowania i innych bibliotek oprogramowania.

Z punktu widzenia programowania wszystkie te rzeczy działają w sposób całkowicie kompatybilny i nie ma znaczenia, gdzie i przez kogo oprogramowanie jest tworzone. Wszystkie te rzeczy są bardzo skutecznie tłumaczone na język maszynowy, a zespół programistów i zespół IT spędzają cały swój czas na rozwiązywaniu problemów i rozwiązywaniu problemów w różnych środowiskach. Dzięki temu mogą świadczyć użytkownikom lepsze usługi. Zapłać cenę końcową. Połączenie tych elementów oznacza mniej błędów w oprogramowaniu, ponieważ twórcy oprogramowania pracują teraz przy założeniu, że całe środowisko programistyczne i testowe jest bezpieczne i zachowuje wszystkie warunki panujące w czasie produkcji.

Możliwość biegania w dowolnym miejscu

Kontenery mogą działać praktycznie wszędzie, co jest niesamowitą szansą na wygodny rozwój i programistów. Teraz mogą z łatwością uruchamiać kontenery na wszystkich trzech systemach operacyjnych – Linux, Windows i Mac – i nie ma różnicy między maszynami wirtualnymi a zwykłymi systemami fizycznymi. Kontenery można łatwo wdrożyć w dowolnym miejscu, czy to na komputerze programistycznym, na serwerach w centrum danych, czy w środowiskach chmury publicznej. Jedną z rzeczy, która spowodowała rozwój i rozpowszechnienie tego wydania, była prezentacja i użycie kontenera Docker, który bardzo pomógł wszystkim programistom. Gdziekolwiek chcesz uruchomić program, możesz użyć kontenera.

Izolacja kontenera

Kontenery wirtualizują procesory, pamięć, pamięć masową i inne zasoby sieciowe na poziomie systemu operacyjnego, który tworzy dla nich piaskownicę. Ta piaskownica jest logicznie oddzielona od innego oprogramowania…
Od kodu do wdrożenia oprogramowania

Kontenery pozwalają nam połączyć nasze oprogramowanie i niezbędne zależności w formie krótkiego manifestu, który może kontrolować ich wersję. Dzięki temu możemy łatwo udostępniać oprogramowanie różnym programistom i maszynom wirtualnym w naszym klastrze.

W ten sam sposób, w jaki biblioteki łączą kod, tutaj programiści mogą również oddzielić takie elementy, jak dostęp użytkowników, zarządzanie sesjami itp. Teraz kontenery umożliwiają działanie oprogramowania jako kompletnego pakietu, niezależnie od systemu operacyjnego, komputera, lub nawet strukturę samego kodu. W połączeniu z architekturą opartą na usługach cały pakiet oprogramowania może być znacznie mniejszy, co oznacza większą elastyczność i produktywność w tworzeniu oprogramowania. Mogą one z łatwością prowadzić do programowania, debugowania, programowania i ogólnego zarządzania procesem tworzenia oprogramowania.

Integracja kontenerów z architekturami opartymi na usługach

Kontenery najlepiej współpracują z architekturami opartymi na usługach. W odróżnieniu od architektur monolitycznych, które w każdej części oprogramowania przeplatają się z systemem operacyjnym i sposobem przetwarzania danych, architektury oparte na usługach umieszczone są w oddzielnych częściach. Separacja i podział siły roboczej dają usługom możliwość, że nawet jeśli jeden z nich wystąpi błąd i ulegnie awarii, oprogramowanie pozostałych usług będzie nadal działać w całkowicie bezpieczny sposób.

Konteneryzacja umożliwia programistom tworzenie oprogramowania znacznie szybciej i bardziej niezawodnie; Ponieważ baza kodu jest tutaj mniejsza, jest ona również znacznie łatwiejsza w utrzymaniu, ponieważ usługi są od siebie odizolowane. Tutaj możemy z łatwością mieć określone dane wejściowe dla naszych konkretnych wyników.

Kontenery świetnie sprawdzają się w przypadku oprogramowania opartego na usługach, ponieważ można osobno sprawdzić kondycję każdego kontenera. Każda usługa jest ograniczona do określonych zasobów i zaczyna działać niezależnie od innych.

Ponieważ kontenery działają niezależnie od kodu, kontenery pozwalają nam pracować z usługami jako oddzielną częścią, jak „czarna skrzynka”. Dalsze zmniejszanie przestrzeni jest kolejnym tematem programu. Byli pisarze, na których warto zwrócić uwagę. Kiedy programiści pracują nad połączonymi usługami, mogą łatwo zainstalować kontener dla tej usługi, nie tracąc czasu, a środowisko jest całkowicie zdrowe i już naprawione. Jest.

Kubernetes: konfigurowanie kontenera klasy produktowej

Google z sukcesem współpracowało z wewnętrznym systemem zarządzania klastrami Borga i wiele się z niego nauczyło, co zastosowało w projekcie Kubernetes o otwartym kodzie źródłowym. Teraz zajmujemy się kontenerami, popartymi dziesięcioletnim doświadczeniem. Jak wiemy, „K8s” – tutaj Corinth zapewnia zautomatyzowaną konfigurację kontenerów, której można używać do zarządzania naszymi maszynami i usługami – poprawiając niezawodność oraz skracając czas udostępniania i zużycie zasobów. Staje się DevOps i wydaje się zmniejszać niepokój związany z wykonywaniem tych zadań.

Corinth znacznie ułatwił współpracę, rozwój i zarządzanie oprogramowaniem.

Corinth automatyzuje wycofywanie i wycofywanie oraz monitoruje stan naszych usług, aby zapobiec przyszłym problemom. Regularnie sprawdza również stan naszych usług, ponownie uruchamia zatrzymane lub problematyczne kontenery i reklamuje usługi klientom, gdy tylko potwierdzą pomyślne logowanie. . Dodatkowo Corinth automatycznie włącza lub wyłącza usługi w oparciu o wykorzystanie, zapewniając, że masz tylko te usługi, których potrzebujesz. Podobnie jak inne kontenery, Corinth pozwala nam na deklaratywne zarządzanie naszym klastrem, co pozwala nam zainstalować nasze oprogramowanie do kontroli wersji i łatwo działać. Replikujmy (replikujmy) w prostszy sposób.

Struktury korynckie

  • Automatyczne postępy i regresje;
  • monitorowanie stanu usług;
  • Automatyzacja skali usług rekrutacyjnych;
  • zarządzanie deklaratywne;
  • Wdrażanie i programowanie w dowolnym miejscu, w tym wdrażanie hybrydowe.

Być może najważniejszym punktem jest to, że Corinth można używać w dowolnym miejscu, co pozwala nam skalować naszą konfigurację od prostego środowiska programistycznego do publicznej chmury obliczeniowej lub podwójnych środowisk programistycznych. Dzięki temu nasza infrastruktura może zapewnić pełny dostęp wszystkim użytkownikom, niezależnie od tego, gdzie się znajdują, a naszej firmie zrównoważyć koszty i kwestie bezpieczeństwa, a wszystko to można dostosować do naszych konkretnych potrzeb. I znowu jest to chiński.

Twój klaster w Google

Trzeba przyznać, że Corinth najlepiej działa na platformie chmurowej Google’a. Silnik Corinth firmy Google to pierwsze rozwiązanie do zarządzania Corinth, które pozwala nam szybko zainstalować i używać tego silnika.

Zaufani inżynierowie Google w pełni zarządzają obecnym silnikiem Google, dlatego nazywany jest on najlepszym kontenerem, dzięki któremu możesz mieć pewność najwyższej dostępności i aktualizacji. Działa bezproblemowo ze wszystkimi usługami GCP, takimi jak monitorowanie StackDriver, rozwiązywanie problemów, oprogramowanie do rejestrowania oraz zarządzanie i identyfikacja osób. Google zapewnił Ci najlepszą infrastrukturę.

Konstrukcje inżynieryjne Koryntu

  • zarządzane oprogramowanie Corinth o otwartym kodzie źródłowym;
  • Umowa SLA na poziomie 99,5% i najwyższy poziom dostępności dzięki zintegrowanym wdrożeniom wielostrefowym;
  • Bezproblemowa integracja z innymi usługami GCP;
  • Najbardziej ekonomiczny dostępny kontener przemysłowy;
  • elastyczność i możliwość interakcji z klastrami lub innymi serwerami w chmurze;
  • zarządzana infrastruktura na poziomie ocen Google;

Google jest jednak zainteresowany zapewnieniem swoim użytkownikom różnych opcji. Platforma chmurowa Google oferuje szeroką gamę usług do obsługi kontenerów. Korzystanie z Platform-as-a-Service (Platform-as-a-Service) współpracującej z Google App Engine zapewnia elastyczne środowisko do zarządzania klastrami z silnikiem Corinth do infrastruktury aż do klas Global z Google Compute Engine. Usługa ta działa w oparciu o stosunek ceny do wydajności. Ta usługa zapewnia najlepsze rozwiązania do uruchamiania kontenerów na platformie chmurowej Google.

Kompletne rozwiązanie kontenerowe

Na tym rozwój się nie kończy. Platforma chmurowa Google zapewniła nam narzędzia umożliwiające wykorzystanie kontenerów na wszystkich etapach tworzenia oprogramowania, od opracowania po pełne wdrożenie produktu. Usługi takie jak Cloud Build i Container Registry udostępniają obrazy Dockera do przechowywania i zarządzania, które Google obsługuje na najwyższym poziomie bezpieczeństwa i sieci światowej klasy. Usługa Google Container Optimized OS zapewnia lekki kontener będący bezpiecznym systemem operacyjnym, który działa z preinstalowanymi kontenerami Docker i Corinth. Wszystkie systemy zarządzania kontenerami mogą być hostowane na GCP.

Często Zadawane Pytania

Co to jest kontener?

Kontenery to pakiety oprogramowania dostarczane w ramach standardowych jednostek w celu opracowywania, transportu lub korzystania z usług. System operacyjny serwera jest podzielony na niezależne i oddzielne części w kontenerach. Ponieważ rdzeń systemu operacyjnego jest tutaj podzielony na kilka części, wykorzystanie zasobów sprzętowych jest bardziej optymalne niż maszyn wirtualnych, a także zmniejsza się objętość wykonywania programu. Zwykle na serwerze, usłudze w chmurze lub komputerze można używać więcej kontenerów niż maszyn wirtualnych.

Jakie są najbardziej znane kontenery?

Kontenery Dockera, kontener open source i kontener Kubernetes firmy Google, który działa w ramach platformy chmurowej tej firmy, należą do najsłynniejszych kontenerów na rynku.

Jakie są ważne cechy kontenerów Docker?

Mają formę standardowej przestrzeni. Można je łatwo uruchomić w dowolnym miejscu w formie przenośnej, są lekkie, co zwiększa liczbę pojemników dostępnych na urządzeniu. Jednocześnie są bezpieczne, a tworzone przez nie przestrzenie są odizolowane i niezależne od innych przestrzeni.

Jaka jest różnica między maszynami wirtualnymi a kontenerami?

Kontenery działają w oparciu o wirtualizację, czyli w istocie abstrakcję systemu operacyjnego, nie przejmują żadnego sprzętu. W rzeczywistości przestrzenie tworzone przez kontenery są oprogramowaniem i nie są definiowane w odniesieniu do sprzętu. Natomiast maszyny wirtualne w zasadzie pracują ze sprzętem i dzielą zasoby sprzętowe w zależności od liczby użytkowników. W maszynie wirtualnej każdemu użytkownikowi przypisana jest określona ilość sprzętu.

Jaka jest różnica między kontenerem Google Corinths a innymi kontenerami?

Zasadniczo Google stara się zapewnić doskonałą usługę w oparciu o system zarządzania usługami w chmurze. Tak naprawdę Corinth to system kontenerowy, który przejmując wszystkie funkcje systemu zarządzania kontenerami, dobrze współpracuje z innymi systemami Google. Chociaż według Google wiele aktywnych systemów, w tym Gmail i jego wyszukiwarka, tak naprawdę jest to kontener. Jednak Corbints to bardzo mocny i wydajny system zarządzania kontenerami oparty na platformie chmurowej Google.

Jakie struktury ma Corbinets?

Kontener ten ma możliwość automatycznego poruszania się do przodu i do tyłu. Ponadto ma możliwość monitorowania stanu usług, z którymi współpracuje. W kontenerze tym zastosowano automatyzację skali wdrażania usług. Wykorzystuje się w nim również zarządzanie deklaratywne. Kontener ten można wdrażać i rozwijać w dowolnym miejscu, łącznie z wdrażaniem podwójnym.

Pobierz bezpłatne motywy WordPress PremiumPobierz najlepsze motywy WordPress do pobrania za darmoPobierz motywy WordPress za darmoPobierz motywy WordPressdarmowy kurs Udemy do pobraniapobierz oprogramowanie SamsungaPobierz motywy WordPress za darmodarmowy kurs Udemy do pobrania