{"id":70746,"date":"2022-04-20T16:04:09","date_gmt":"2022-04-20T14:04:09","guid":{"rendered":"https:\/\/fotc.com\/?p=70746"},"modified":"2026-02-16T09:33:43","modified_gmt":"2026-02-16T08:33:43","slug":"konteneryzacja-czym-sa-kontenery","status":"publish","type":"post","link":"https:\/\/fotc.com\/pl\/blog\/konteneryzacja-czym-sa-kontenery\/","title":{"rendered":"Konteneryzacja – czym s\u0105 kontenery i sk\u0105d ich popularno\u015b\u0107?"},"content":{"rendered":"\n
Skalowalno\u015b\u0107, efektywno\u015b\u0107 wykorzystania zasob\u00f3w, szybko\u015b\u0107 dzia\u0142ania oraz niski koszt – oto niekt\u00f3re z zalet jakie daje konteneryzacja. Poni\u017cej wyja\u015bniamy na czym polega ca\u0142y proces i co Tw\u00f3j biznes mo\u017ce dzi\u0119ki niemu zyska\u0107. <\/p>\n\n\n\n
Scenariusz numer 1:<\/strong> Twoja nowa aplikacja pracuje bez zarzutu lokalnie, ale tu\u017c po wdro\u017ceniu na serwerze sypie b\u0142\u0119dami jak z r\u0119kawa. Przyczyn takich problem\u00f3w mo\u017ce by\u0107 wiele: inna wersja bibliotek, brak kompatybilno\u015bci systemu operacyjnego, b\u0142\u0119dy w konfiguracji serwera. <\/p>\n\n\n\n Scenariusz numer 2:<\/strong> Tw\u00f3j zesp\u00f3\u0142 chce szybko wdro\u017cy\u0107 niezb\u0119dn\u0105 poprawk\u0119 do jednej z funkcji aplikacji. Niestety oznacza to konieczno\u015b\u0107 wy\u0142\u0105czenia jej w ca\u0142o\u015bci, co oznacza dotkliw\u0105 dla u\u017cytkownik\u00f3w przerw\u0119 w dost\u0119pno\u015bci oprogramowania. A je\u015bli po wdro\u017ceniu poprawki ca\u0142a aplikacja przestanie dzia\u0142a\u0107? <\/p>\n\n\n\n Scenariusz numer 3:<\/strong> Twoja aplikacja bije rekordy popularno\u015bci, a obecna infrastruktura nie jest w stanie szybko reagowa\u0107 na potrzeby u\u017cytkownik\u00f3w. Zdarzaj\u0105 si\u0119 przerwy w dost\u0119pno\u015bci, rosn\u0105 koszty infrastruktury, a zesp\u00f3\u0142 developer\u00f3w nie nad\u0105\u017ca z dodawaniem niezb\u0119dnych poprawek.<\/p>\n\n\n\n Takich scenariuszy mo\u017ce by\u0107 du\u017co wi\u0119cej, ale za ka\u017cdym razem remedium pozostaje to samo – przesiadka na kontenery. <\/p>\n\n\n\n Konteneryzacja w \u015bwiecie IT czerpie pe\u0142nymi gar\u015bciami z idei kontener\u00f3w stosowanych w bran\u017cy logistycznej. To nic innego, jak wirtualny zasobnik<\/strong> mieszcz\u0105cy najcz\u0119\u015bciej aplikacj\u0119 lub jej cz\u0119\u015b\u0107, wraz z zestawem plik\u00f3w niezb\u0119dnych do uruchomienia kodu. <\/p>\n\n\n\n Co warte podkre\u015blenia, aplikacja w takim zasobniku nie jest ju\u017c tak mocno zale\u017cna od rodzaju i konfiguracji infrastruktury. Mo\u017ce by\u0107 w prosty spos\u00f3b przenoszona, powielana i wdra\u017cana w r\u00f3\u017cnych \u015brodowiskach (on premise, w chmurze publicznej, chmurze hybrydowej, etc.).<\/p>\n\n\n\n Wracaj\u0105c do analogii z bran\u017cy transportowej, fizyczny kontener \u0142atwiej przenie\u015b\u0107 ze statku na wagon kolejowy lub naczep\u0119 ci\u0119\u017car\u00f3wki i bezpiecznie dostarczy\u0107 jego zawarto\u015b\u0107 do punktu docelowego.<\/p>\n\n\n Pobierz e-book o Google Kubernetes Engine<\/p><\/div>\r\n W bran\u017cy IT kontenery umo\u017cliwiaj\u0105 odej\u015bcie od tradycyjnej monolitycznej struktury tworzenia aplikacji. Dziel\u0105 je na mniejsze i \u0142atwiejsze do zarz\u0105dzania elementy – tzw. mikrous\u0142ugi (ang. microservices)<\/strong>. Dzi\u0119ki temu ka\u017cda z nich (np. funkcja w konkretnej aplikacji) mo\u017ce by\u0107 \u0142atwiej zaktualizowana, bezpieczniej przetestowana i szybciej wdro\u017cona przez zesp\u00f3\u0142 DevOps. To szczeg\u00f3lnie wa\u017cne kiedy standardem jest zapewnienie sta\u0142ej dost\u0119pno\u015bci do oferowanych us\u0142ug i rozwi\u0105za\u0144.<\/p>\n\n\n\n W \u015brodku takiego kontenera znajduje si\u0119 zatem w\u0142a\u015bciwy kod aplikacji lub jej cz\u0119\u015bci, a do tego wymagane biblioteki, procesy, zale\u017cno\u015bci, pliki binarne oraz sam silnik s\u0142u\u017c\u0105cy do uruchomienia zawarto\u015bci zasobnika. Pewnie zastanawiasz si\u0119 czym kontenery r\u00f3\u017cni\u0105 si\u0119 od maszyn wirtualnych?<\/strong> Wbrew pozorom, to nie ta sama technologia, a jedna z nich nie zast\u0119puje drugiej.<\/p>\n\n\n\n W typowej architekturze wirtualizacji wszystko zaczyna si\u0119 od najni\u017cszego poziomu infrastruktury, czyli fizycznego serwera. Na drugim poziomie zainstalowany jest system operacyjny gospodarza (tzw. host OS). Nad nim dzia\u0142a oprogramowanie nadzoruj\u0105ce prac\u0119 w\u0142a\u015bciwych maszyn wirtualnych (tzw. hypervisor). <\/p>\n\n\n\n Wi\u0119cej o maszynach wirtualnych przeczytasz w artykule: Maszyny wirtualne. Czym s\u0105, jak dzia\u0142aj\u0105 i w jakim celu si\u0119 ich u\u017cywa?<\/a><\/p>\n\n\n\n Hypervisor przydziela maszynom wirtualnym zasoby fizycznego serwera (pami\u0119\u0107 RAM, przestrze\u0144 dyskow\u0105 na dane, moc obliczeniow\u0105 procesor\u00f3w). Odpowiada te\u017c za instalacj\u0119 i utrzymanie wirtualnych system\u00f3w operacyjnych (tzw. guest OS). Niestety system operacyjny wirtualnej maszyny oraz hypervisor zu\u017cywaj\u0105 zasoby sprz\u0119towe fizycznego serwera. Klasyczna wirtualizacja jest bardziej zasobo\u017cerna ni\u017c konteneryzacja, co w efekcie pozostawia mniej mocy obliczeniowej dla aplikacji.<\/p>\n\n\n\n Tymczasem w architekturze konteneryzacji znika konieczno\u015b\u0107 istnienia hypervisora oraz wirtualnych system\u00f3w operacyjnych<\/strong>, niejako duplikuj\u0105cych dzia\u0142anie systemu, na kt\u00f3rym pracuje fizyczny serwer. Szybko\u015b\u0107 dzia\u0142ania aplikacji w \u015brodowisku kontenerowym jest przez to du\u017co szybsza. Nie trzeba czeka\u0107 na uruchomienie hypervisora i za\u0142adowanie systemu maszyny wirtualnej. Aplikacja w kontenerze startuje niemal natychmiast, a odpowiada za to jeden silnik kontenerowy, kt\u00f3ry obs\u0142uguje wszystkie kontenery w danej instancji.<\/p>\n\n\n\n Dodatkowo poszczeg\u00f3lne kontenery stanowi\u0105ce sk\u0142adowe wi\u0119kszej aplikacji mog\u0105 si\u0119 ze sob\u0105 bezpiecznie komunikowa\u0107<\/strong>.<\/p>\n\n\n\n Istnieje jeszcze jedna r\u00f3\u017cnica mi\u0119dzy wirtualizacj\u0105, a konteneryzacj\u0105 – pierwsza z nich skupia si\u0119 na wirtualizacji warstwy sprz\u0119towej, natomiast druga odpowiada za wirtualizacj\u0119 platformy systemowej.<\/p>\n\n\n\n W\u015br\u00f3d najwi\u0119kszych zalet konteneryzacji nale\u017cy wymieni\u0107 nast\u0119puj\u0105ce:<\/p>\n\n\n\n Konteneryzacja niesie te\u017c ze sob\u0105 pewne wyzwania i nie stanowi rozwi\u0105zania wszystkich problem\u00f3w. Oto najpowa\u017cniejsze, o kt\u00f3rych powiniene\u015b wiedzie\u0107: <\/p>\n\n\n\n FOTC to wsparcie 24\/7, zni\u017cki na us\u0142ugi GCP<\/p><\/div>\r\n Aby rozpocz\u0105\u0107 wdra\u017canie konteneryzacji w swoim biznesie, na start potrzebujesz platformy kontenerowej<\/strong>. Kiedy liczba kontener\u00f3w stopniowo zacznie rosn\u0105\u0107, przyjdzie czas na narz\u0119dzie do orkiestracji<\/strong>, czyli dyrygenta, kt\u00f3ry przejmie na siebie automatyzacj\u0119 wdra\u017cania, skalowania i zarz\u0105dzania wi\u0119ksz\u0105 liczb\u0105 kontener\u00f3w. Grupuje wszystkie pojemniki w wygodne do zarz\u0105dzania i przeszukiwania jednostki logiczne nazywane klastrami.<\/p>\n\n\n\n Jedn\u0105 z najpopularniejszych platform kontenerowych jest funkcjonuj\u0105cy od 2013 roku Docker<\/strong>. To narz\u0119dzie typu open-source, kt\u00f3re w du\u017cym uproszczeniu odpowiada za tworzenie plik\u00f3w z obrazem konkretnej funkcji lub aplikacji (Docker Image), uruchamianie jej za pomoc\u0105 silnika (Docker Engine), a tak\u017ce zarz\u0105dzania rojem (swarm) w\u0119z\u0142\u00f3w i kontener\u00f3w (Docker Swarm<\/a>). Docker pocz\u0105tkowo zaprojektowany dla Linuksa dzia\u0142a te\u017c w \u015brodowisku Windows oraz MacOS.<\/p>\n\n\n\n Aby sprawnie zarz\u0105dza\u0107 rosn\u0105c\u0105 liczb\u0105 kontener\u00f3w Dockera potrzebujesz narz\u0119dzia do orkiestracji. Tu na scen\u0119 wchodzi Kubernetes<\/a><\/strong>, opracowane na w\u0142asne potrzeby Google Cloud Platform<\/a> <\/a>rozwi\u0105zanie open-source, kt\u00f3re od 2014 roku jest rozwijane przez Cloud Native Computing Foundation. Kubernetes automatyzuje wdra\u017canie i zarz\u0105dzanie klastrem kontener\u00f3w Dockera w \u015brodowisku chmurowym.<\/p>\n\n\n\nCzym jest konteneryzacja?<\/h2>\n\n\n\n
\r\n <\/div>\r\n <\/div>\r\n Co mo\u017cna przenie\u015b\u0107 do kontener\u00f3w?<\/h2>\n\n\n\n
Konteneryzacja kontra wirtualizacja<\/h2>\n\n\n\n

Konteneryzacja – zalety i wady<\/h2>\n\n\n\n
\r\n <\/div>\r\n <\/div>\r\n Narz\u0119dzia niezb\u0119dne do konteneryzacji<\/h2>\n\n\n\n