Docker - początek

Chciałbym teraz opisać kolejne, dość duże zagadnienie - Dockery.

 

Prawdopodobnie nie opiszę tutaj wszystkiego, może być trochę chaosu, ponieważ jest to potężne narzędzie do wdrażania rozwiązań ale także developowania i zebranie wszystkiego w całość i opisać co i jak, wiązałaby się z przepisaniem dokumentacji :)

 

Co to jest Docker ?

docker.png

 

Zgodnie z definicją na Wikipedii:

Docker to otwarte oprogramowanie służące jako "platforma dla programistów i administratorów do tworzenia, wdrażania i uruchamiania aplikacji rozproszonych".

Docker jest określany jako narzędzie, które pozwala umieścić program oraz jego zależności w lekkim, przenośnym, wirtualnym kontenerze, który można uruchomić na prawie każdym serwerze z systemem Linux.

Tyle odnośnie teorii.

Oficjalny link do dockera: https://www.docker.com/

Teraz przełóżmy to trochę na ludzki język.

Docker umożliwia utworzenie kontenerów (zawierających pojedyncze aplikacje), które można składać w większe środowiska (np połączenie bazy danych z PHP).


Skąd będziemy pobierać te kontenery ?

Najpopularniejszym miejscem jest https://hub.docker.com/ .


Ok, ale czym to się różni od zwykłej instalacji aplikacji na komputerze?


Jedną z zalet dockera, jest stworzenie identycznego środowiska po stronie komputera programisty oraz komputera produkcyjnego.

Dla mnie największą zaletą jest możliwość stosowania różnych wersji aplikacji oraz tworzenie niezależnych środowisk dla siebie.

Podam przykład dla dwóch powyżej - chcielibyśmy stworzyć aplikację, która będzie korzystać z PHP + Apache2 , MySQL, phpMyAdmin, memcache i redis.

Stosując standardowe podejście musielibyśmy zainstalować na naszym komputerze WSZYSTKIE powyższe aplikacje.

 

Ok, może to nie jest przekonujące, ale weźmy drugi przykład - różne wersje aplikacji.

Przykładowo nasza aplikacja korzysta z PHP 5.4 .

Teraz chcielibyśmy przejść na wersję 5.5, 5.6 czy nawet 7 i co teraz? Musimy odinstalować na naszym komputerze PHP i zainstalować we właściwej wersji.

Ale zaraz, zaraz ! A co z innymi projektami ? Znowu usuwać i instalować od nowa ?

Tutaj ratuje nas docker !

Wystarczy wybrać obraz (kontener) z wersją aplikacji w odpowiedniej wersji i... już :) . Ba !

Możemy nawet uruchomić kontenery równolegle, dzięki czemu możemy testować aplikację w 2 różnych wersjach !

 

Fajnie? Chyba fajnie.

Nasuwa się więc wniosek: po co śmiecić komputer usługami, które muszą uruchomić się wraz z systemem, skoro wystarczy jedna - docker - która ma w sobie to wszystko? :)

Koniec z pytaniem "a jaką masz wersję (tutaj wpis nazwę programu) ?"

Ok. Spróbujmy coś zrobić.

Pierwsze co zrobimy to zainstalujemy dockera na komputerze. Jest to bardzo prosta operacja sprowadzająca się głównie do skopiowania i wklejenia kilku poleceń w konsoli. Ze względu na to, że korzystam z Ubuntu, więc wybrałem dystrybucję dla Ubuntu. https://docs.docker.com/engine/installation/linux/

Nie będę tutaj tłumaczył procesu instalacji - jest opisane krok po kroku co się dzieje :)

Od razu po instalacji dockera warto doinstalować narzędzie zwane Docker Compose: https://docs.docker.com/compose/

Prędzej czy później (a myślę, że prędzej) przyda się ono do pracy z kontenerami ;) Więcej w innym wpisie.

Skoro mamy już postawione środowisko czas uruchomić pierwszy kontener :)

sudo docker run hello-world

 Jeśli wszystko jest zainstalowane pomyślnie to powinniśmy zobaczyć taki widok:

-bin-bash_045.png

Ok, tylko teraz uruchamiamy dockera przez sudo - tak działa docker domyślnie. Możemy się tego szybko pozbyć. Wystarczy utworzyć grupę docker:

sudo groupadd docker

a następnie dodać siebie do tej

sudo usermod -aG docker NAZWA_UZYTKOWNIKA

sudo usermod -aG docker damian

Dokładny opis: https://docs.docker.com/engine/installation/linux/linux-postinstall/


Właściwie... to wszystko :) Mamy działające kontenery.

Jeśli chcemy wizualnie zobaczyć, jakie kontenery nam działają w tyle, to możemy skorzystać z poniższego, webowego narzędzia:

https://github.com/kevana/ui-for-docker

 

dockerui-ui.png