Docker als ontwikkelomgeving
Je hebt het vast eens meegemaakt. Je ontwikkelomgeving werkt niet mee. Het opzetten van bijvoorbeeld een bestaand project (zo ook Geek Bites) op je eigen machine is afhankelijk van een aantal installaties. Om deze projecten te kunnen runnen zonder een lokale ontwikkelomgeving op te moeten zetten is Docker in het leven geroepen.
Docker biedt de mogelijkheid om software in containers te wrappen. Deze containers bevatten een compleet filesystem met alles wat nodig is om de software te runnen. Denk hierbij bijvoorbeeld aan: de code zelf, libraries en tools. Alles wat normaal gesproken op een server geïnstalleerd zou worden.
Op deze manier kan gegarandeerd worden dat de software elke keer hetzelfde zal werken, ongeacht de omgeving waarin de docker containers draaien.
Maar kunnen er dan niet net zo goed virtuele machines gebruikt worden? Het antwoord is: Nee. Hoewel de manier waarop resources geïsoleerd worden vergelijkbaar is met de manier waarop dit binnen een virtuele machine gebeurt, zijn Docker containers een stuk flexibeler en efficiënter. In onderstaande afbeelding is de opbouw van een opzet met virtuele machines en een opzet met Docker containers naast elkaar gezet. Een groot nadeel aan virtuele machines is het operating system waar ze op draaien. Dit kost je machine met gemak tientallen GB's aan ruimte.
Docker containers daarentegen zijn lightweight en maken allen gebruik van dezelfde kernel waarin elke container als geïsoleerd process draait. De processen draaien, in tegenstelling tot virtuele machines, wel direct op het host operating system. Dit maakt de guest operating systems overbodig.
Docker installeren
Om duidelijk te maken hoe docker in de praktijk werkt is besloten om Geek Bites zelf in een Docker container te laten runnen. Hiervoor dient allereerst Docker op de lokale machine geïnstalleerd te zijn. Docker voor Mac en Windows is hier te downloaden. Docker for Mac en Docker for Windows zorgen ervoor dat de containers die aangemaakt worden op localhost draaien.
Na Docker geïnstalleerd en opgestart te hebben kan onderstaand commando uitgevoerd worden in de Geek Bites directory:
docker-compose up -d
Bovenstaand commando zal het docker-compose.yml bestand uitlezen en aan de hand van de inhoud hiervan bepalen welke containers er gebouwd moeten worden. In dit geval is dat slechts één, namelijk de Jekyll container.
Eventueel kan vervolgens het volgende commando uitgevoerd worden om te zien of de container draait:
docker ps
Geek Bites draait nu op localhost en is te benaderen op poort 4000, dus als volgt:
localhost:4000
Gefeliciteerd! Je hebt Geek Bites draaien in een Docker container.