1.1 Inleiding Tot Docker - dkmattiUCLL/IT-Landscape GitHub Wiki
Wat is Docker?
Docker is een handige manier om alle aspecten van een applicatie samen te vatten in één product. Dit zorgt er voor dat de software compatibel is op alle systemen, en meteen werkt zonder vereiste aanpassingen. Dit vermijdt het "It works on my device" probleem, waar menig programmeur al tegen gestoten is. Docker is een antwoord op de frustraties van progammeurs om applicaties constant te moeten ombouwen om juist te werken op andere systemen.
Korte geschiedenis
Solomon Hykes, de bedenker van docker, was oorspronkelijk een mede-oprichter en medewerker van het bedrijf dotCloud inc. Het bedrijf was een "platform as a service of PaaS" bedrijf, maar zonder al te veel commercieel succes (PaaS regelt de servers, de programmeertaal, de DBs en de OS, jij moet enkel nog de code schrijven). Solomon Hykes werkte intern aan een project genaamd "Docker", een tool om de hele programmmeer omgeving van een project te runnen op verschillende apparaten. DotCloud inc. bracht Docker oorspronkelijk als gratis open-source tool uit in maart 2013. Na de explosie in populariteit bij programmeurs besloot DotCloud om zich volledig te focussen op Docker. In oktober 2013, doopte dotCloud zich om tot Docker. De dag van vandaag is Docker niet meer weg te denken uit het informatica landschap.
bronnen: medium,changelog,infoq
Waaruit bestaat Docker?
De drie belangrijkste concepten van Docker zijn de Dockerfile, de Image en de Containers. Om deze concepten uit te leggen ga ik de analogie van een doos gebruiken.
Docker File
Een Dockerfile is een text-bestand dat instructies bevat om de source code van de Docker te bouwen.
Dit is eigenlijk een lijst van requirements waarin je alle info meegeeft die het programma moet bevatten, zoals bijvoorbeeld de OS. Deze lijst geeft aan wat er in de doos moet zitten zodat alles goed werkt.
De image wordt op basis van de Dockerfile gebouwd.
Docker Image
Een Docker Image is eigenlijk de blueprint van de doos. Hoe de doos er uit ziet, wat er in zit(op basis van de Dockerfile), en wat er mee moet kunnen gebeuren staat allemaal in deze blueprint. Maar het is slechts een blueprint, nog geen fysieke doos. Wanneer een Docker Image gemaakt is, kan deze niet meer aangepast worden.
Docker Images worden meestal door de gebruiker gemaakt op basis van de Dockerfile, maar populaire frameworks hebben een officiële image die je gewoon kan overnemen. Een voorbeeld hiervan is Node.
Containers
De Containers zijn de concrete uitwerkingen van de doos. Dit is de fysieke doos die je kunt gebruiken. In een programmeer context zijn dit de programmas die je effectief kunt uitvoeren. Op basis van één image kunnen oneindig veel containers gemaakt worden.