• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Docker - zastosowanie

Object Storage Arubacloud
+3 głosów
1,571 wizyt
pytanie zadane 28 maja 2018 w PHP przez sapero Gaduła (4,100 p.)
Witam mam kilka pytań :

co to jest Docker i do czego służy?

1. Czy jest sens abym lokalnie działał z tym narzędziem budując aplikacje dla siebie (php7+html+js+xampp) ?

2. Gdzie znajdę dobry poradnik dla mnie jeśli nie miałem styczności z tym narzędziem?

3. Może jakieś przykłady z życia gdzie ma zastosowanie Docker tak abym mógł zobaczyć zastosowanie w praktyce.

4. Jakieś wskazówki na początek przy korzystaniu z Dockera :)

Dziękuję z góry:)

1 odpowiedź

+9 głosów
odpowiedź 28 maja 2018 przez RafalS VIP (122,820 p.)
edycja 29 maja 2018 przez RafalS

Mam nadzieję, że wiesz co to wirtualizacja, bo będę w przykładach dużo porównywał do maszyn wirtualnych. W wielkim skrócie maszyna wirtualna umożliwia Ci odpalenie wirtualnego systemu na Twoim systemie. Wygląda to tak, że masz np windowsa, a w aplikacji np virtualbox masz ubuntu. Nie chce mi się i nie jestem specjalistą od wskazywania jak działa samo dzielenie zasobów procesora, ramu itd pomiędzy systemem gospodarza a maszyna wirtualną, jak jesteś ciekawy to poczytaj o wirtualizacji i maszynach wirtualnych na necie.

0. Odpowiadając na pytanie docker to taka maszyna wirtualna tylko po pierwsze o wiele lżejsza - więcej wykorzystuje zasobów gospodarza a mniej tworzy swoich w porównaniu do wirutalnej maszyny:

Objawia się to m.in. tym, że domyślny use case dockera to system, z którym rozmawiasz przez konsole. A wirtualna maszyna ma pulpit i wszystkie te bajery.
Podsumowując docker pozwala stworzyć wirtualne środowisko małym kosztem. Po co coś takiego? Wyobraź sobie, że tworzysz jakąś dużą aplikację i najpierw pracujesz sam. Wszystko jest ok. Potem przychodzi ktoś drugi do pomocy i za pierwszym razem głowicie się, czemu u Ciebie coś działa a u niego nie. Po tysiącach przekleństw i pytań przeglądniętych na stacku przypominasz sobie, że 2 miesiące temu jak zaczynałes prace to zainstalowałeś i skonfigurowałeś taki jeden program. Instalujecie go więc u Twojego kolegi, ale dalej nie działa. Po kolejnych przekleństwach stwierdzacie, że może to przez to, że Ty pracujesz na windowsie7 a on na 10-tce. Kolega więc na swojej 10-tce stawia wirtualnego windowsa 7. Konfigurujecie wszystko od nowa. Wreszcie udaje się. Możecie teraz pracować razem. Za tydzień okazuje się, że potrzebujecie jeszcze więcej programistów. Przychodzą kolejni. Wiadomo już mniej więcej jak konfigurować środowisko, żeby wszystko działało, ale zajmuje to sporo czasu. Kolejnym krokiem jest wprowadzenie odpowiednich konfiguracji na maszynie wirtualnej i zapisanie jej stanu, tak żeby każda kolejna osoba miała już gotową konfigurację.

Generalnie w tym miejscu osiągneliśmy już całkiem dobry punkt, każda kolejna osoba przychodzi i dostaje gotową konfiguracje. Ale wyobraź sobie teraz, że trzeba przetestować Twoją aplikację na kilku różnych środowiskach. Np chcesz mieć pewność, że jak podmienisz jedną bibliotekę na starszą to wszystko będzie działać, albo jak zmienisz system. Stawianie wielu wirutalnych maszyn jest długie i wymagające sprzętowo i tu przychodzi z pomocą docker. Czyli taka mini wirtualna maszyna. 

Docker operuje na kilku pojęciach, m.in. obraz i kontener. Obraz to taki jakby zapisany stan środowiska, za pomocą którego można odpalać wiele środowisk, które po odpaleniu staną się kontenerami i wszelkie zmiany na nich nie będą wpływać na źródło czyli obraz. Jest to właśnie to o czym mówiłem wcześniej. Gotowa wirtualna maszyna do sklonowania, tylko o wiele prościej i szybciej. Docker jest zrobiony właśnie pod to, żeby często stawiać oddzielne kontenery ze zbudowanych obrazów i jest to bardzo szybkie. Przez to wcześniejsza zabawa na kontenerze nie wpłynie na działanie późniejszej, bo jak chcesz zrobić coś innego to stawiasz nowy kontener.

Wygląda to tak, że piszesz sobie wymagania w dockerfile'u. Coś w stylu: system ubuntu 16.04, zainstalowane takie pakiety itd. Z tego dockerfile'a docker zbuduje Ci obraz, dzięki któremu masz pewność, że kontener z niego wygenerowany zawsze będzie taki sam. Przerzucanie takich obrazów jest o tyle ułatwione, że wystarczy komuś podesłać dockerfile (najczęściej kilka linijek tekstu), a on sobie już sam zbuduje obraz u siebie i odpali kontener. Kolosalna różnica w porównaniu do przenoszenia wielu GB całej wirtualnej maszyny.

1. Jeśli robisz wszystko lokalnie samemu to nie ma dużego sensu zabawa w dockery. Zalety jakie daje docker web developerce:
-pewność, że przy pracy na wielu komputerach z wieloma osobami zawsze będzie działać czyli taka odporność na różnice środowiskowe
-izolacja - na dockerze jawnie ustawiasz które porty pozwalasz itd, jeśli np ktoś Ci zawirusuje serwer na dockerze przez apke to po pierwsze do niczego się nie dobierze, bo na dokerze nic nie ma poza aplikacją a po drugie niszczysz kontener, stawiasz od nowa z tego samego obrazu, i odpalasz apke; to tyle, w przypadku prywatnego komputera może być troszke gorzej przy zainfekowaniu serwera
-prędkość postawienia nowego środowiska, np pada sprzęt - postawienie apki na nowym w dockerze zajmie krocej niż stawianie wirtualnej maszyny

2. Niestety nic nie polece. Jeśli znasz angielski to znajdziesz multum różnych artykułów, blogów, filmików itd o dockerze. Po polsku nie szukałem to nie wiem.

3. Chyba już odpowiedziałem. Dodam np, że sprawdza się bardzo dobrze przy systemach rozproszonych, gdzie musimy mieć to samo środowisko w wielu miejscach. Widzałem też kilka tutoriali z wykorzystaniem dockera w hackowaniu. Po pierwsze jest bezpieczny, bo jak coś sobie ściągniesz niefajnego to usuwasz kontener i elo, a po drugie czasem potrzebujesz kali linuxa tylko po to, żeby jedną komende odpalić. Troche kiepsko byłoby stawiać sobie cały system tylko w tym celu :P. A docker zrobi to raz dwa.

4. Czytaj tutoriale i eksperymentuj, nie wiem co więcej mogę polecić.

 

komentarz 29 maja 2018 przez Tomek Sochacki Ekspert (227,510 p.)
Duży plus, myślę, że pomożesz nie tylko koledze @sapero ale i wielu innym początkującym web developerom. Bardzo ciekawa odpowiedź.
komentarz 29 maja 2018 przez sapero Gaduła (4,100 p.)

@RafalS, Dziękuje za wyczerpującą odpowiedź. Teraz już mam wizje jak to wygląda w praktyce

komentarz 17 czerwca 2018 przez sapero Gaduła (4,100 p.)

@RafalS, Dzięki za odpowiedź! o to mi chodziło:) a może możesz coś powiedzieć o połączeniu JENKINS + DOCKER?

komentarz 19 czerwca 2018 przez RafalS VIP (122,820 p.)
Po pierwsze, następnym razem nie zadawaj pytań w komentarzach do jakichś starych zapomnianych pytań. Czemu? Nawet jeśli uzyskasz odpowiedz to forum traci sens, nikt tego nie preczyta, nie nauczy się czegoś nowego, a może zweryfikuje poprawność odpowiedzi i doda coś od siebie. Zadając pytanie tutaj równie dobrze mogłeś je zadać w prywatnej wiadomości.

Akurat nie korzystałem nigdy z Jenkinsa, co nieco słyszałem, ale to za mało, żeby się wypowiadać :P. Rzuciłem okiem na liczbę pobrań i gwiazdek na docker hubie. 10 mln+. Popularność rozwiązania może o czymś świadczyć :P

Podobne pytania

0 głosów
0 odpowiedzi 93 wizyt
pytanie zadane 11 stycznia 2020 w PHP przez kevin Mądrala (5,010 p.)
0 głosów
0 odpowiedzi 230 wizyt
pytanie zadane 30 września 2019 w PHP przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
1 odpowiedź 647 wizyt
pytanie zadane 14 lipca 2019 w PHP przez `Krzychuu Stary wyjadacz (13,940 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...