Trudne początki z dockerem

Wiele razy opowiadałem już o Dockerze, na Snapchacie czy w gościnnym wpisie na devstype.pl. Wychwalałem prostotę tego narzędzia i możliwości, które wnosi. Dotąd kończyło się to jednak tylko na pustych słowach. Najwyższy czas to udowodnić.

Na początku zakładam, że docker został już zainstalowany na waszym systemie operacyjnym. Myślę, że każdy z nas poradzi sobie z tym bez większego problemu, chyba że używacie Windowsa i nie lubicie Hyper-V. Wtedy możecie mieć jakieś problemy, ale myślę, że nie ma studenta pierwszego roku, który nie dałby sobie z tym rady.

 

Czas start !

Powiedzmy, że robimy prosty projekt w celu zapoznania się z nowym językiem czy frameworkiem. Dochodzimy do momentu, gdy chcemy go przetestować na prawdziwej „produkcyjnej” (nie mockiem) bazie danych. Mamy w tym momencie kilka opcji:

  • Znajdujemy darmowy hosting wybranej przez nas bazy.
  • instalujemy ją bezpośrednio do komputerze
  • instalujemy ją na maszynie wirtualnej.
  • strzelamy focha, bo się nie chce i idziemy oglądać netflixa.

Alternatywnym rozwiązaniem będzie stworzenie kontenera z wybraną usługą. Tutaj za przykład posłuży nam MongoDB (trzeba być modnym nie ?).

Wystarczy, że udamy się do repozytorium darmowych obrazów dockera https://hub.docker.com/explore/ i znajdziemy obraz, który nas interesuje. Następnie możemy go pobrać za pomocą docker pull:

 

Następnie stworzymy i wystartujemy kontener za pomocą komendy

gdzie:

  • –name mongo nadaje przyjazną dla człowieka nazwę kontenerowi ( w tym przypadku nazywamy go po prostu mongo)
  • -p 27017:27017 odpowiada za przekierowanie portu kontenera na port naszego localhosta. Pierwszy port odpowiada naszej maszynie, drugi kontenerowi ({portNaLocalhost}:{portUdostępnionyPrzezDockera})
  • -d oznacza uruchomienie kontenera w trybie detached czyli w tle
  • na samym końcu podajemy nazwę obrazu w tym przypadku jest to po prostu mongo

 

Od tego momentu mamy działającą bazę danych, bez zaśmiecania sobie systemu. Dodatkowo wszystko można jeszcze bardziej uprościć. Pierwsze polecenie można pominąć, ponieważ docker run wywołuje docker pull, jeżeli nie znajdzie wybranego obrazu na dysku !