‫Dus wat doen we met dit bestand?
‫Nou, laten we eruit gaan. We gaan in deze map zien dat we alleen dit ene bestand hebben.
‫Het is amper een k groot.
‫Het bevat duidelijk niets anders dan de tekst, maar het zijn de instructies voor het bouwen van
‫onze afbeelding.
‫Het from-commando, wanneer ik deze afbeelding bouw, zal die debian jessie-afbeelding daadwerkelijk van Docker Hub naar
‫mijn lokale cache trekken. En dan gaat het regel voor
‫regel elk van die strofen in mijn docker-engine uitvoeren en elk van
‫die lagen cachen.
‫Laten we docker image build typen en we gaan het taggen.
‫Onthoud, dat is de naam die we een afbeelding gaan geven.
‫Aangezien ik deze afbeelding alleen lokaal ga gebruiken, hoef ik mijn Docker Hub-accountnaam niet te gebruiken. Ik kan het noemen zoals
‫ik wil.
‫Ik ga het aangepaste nginx noemen, en ik ga hier een punt plaatsen, wat in feite zegt: bouw
‫het dockerbestand in deze map. En je zult zien dat als
‫het hier doorheen gaat, dat elke stap een regel is in het dockerbestand dat het uitvoert binnen deze afbeelding terwijl het het opbouwt.
‫En dan is er een kleine hash aan het einde, wat eigenlijk de hash is die het
‫in de buildcache bewaart, zodat de volgende keer dat we dit ding bouwen, als die regel niet is veranderd
‫in het dockerbestand, het het niet opnieuw zal uitvoeren.
‫Dit is een van de magische redenen waarom Docker de implementatie en het bouwen van software zo snel maakt, dat het zelfs intelligent genoeg
‫is om de stappen in de build in de cache op te slaan.
‫Dus heel vaak, nadat je de eerste keer een afbeelding hebt gemaakt, en je bent eigenlijk alleen maar bezig
‫met het wijzigen van je aangepaste broncode en niet per se de applicatie op zich,
‫is al dit installatiegedoe al gebeurd.
‫U heeft dus zeer korte bouwtijden.
‫Oké, dus nu zijn we klaar met bouwen. Dat duurde ongeveer een minuut.
‫Maar wat als ik terugga in dat dossier? Ik ga een extra blootgestelde poort toevoegen.
‫Ik ga bijvoorbeeld gewoon 8080 doen.
‫Dat betekent niet dat nginx slim genoeg is om te weten dat ik deze poort open, of dat het
‫op een of andere manier communiceert met nginx.
‫Ik sta alleen toe dat de container pakketten op die poort ontvangt.
‫Laten we voor de zekerheid een docker-image ls doen. We zullen helemaal bovenaan zien dat het het automatisch als laatste
‫heeft getagd, toch?
‫Omdat we het alleen de naam van de repository noemden.
‫We hebben het niet echt een dubbele punt-tagnaam gegeven toen we het tagden.
‫Dus laten we het opnieuw bouwen.
‫Wow, dat was snel, toch?
‫Dat kostte ons slechts een paar seconden. En je zult merken dat bij elke stap het gebruik van cache staat. Beginnend met stap 2, staat er
‫cache
‫gebruiken, cache gebruiken op 3, cache gebruiken op 4. Op 5 herkent het bij stap 5 dat die
‫regel anders is.
‫Dus het voert dat eigenlijk uit in de container. En dan, bij stap 6, moet het die regel opnieuw
‫uitvoeren, want op het moment dat een regel verandert, moet elke regel daarna ook opnieuw worden opgebouwd.
‫Dit brengt het punt naar voren over de volgorde van uw regels in uw Dockerfile. Want als je dingen uit de hand
‫loopt, bijvoorbeeld als
‫je de code kopieert in... laten we zeggen dat je een website aan het bouwen bent. Als je de softwarecode kopieert
‫die je helemaal aan het begin van het bestand maakt, dan zal elke keer dat je een bronbestand
‫wijzigt en je het opnieuw opbouwt, het hele Dockerbestand opnieuw moeten worden gebouwd.
‫Het is dus van cruciaal belang voor uw gezond verstand en tijd dat u gewoonlijk de dingen bovenaan uw
‫Dockerfile houdt die het minst veranderen en vervolgens de dingen die het meest veranderen onderaan uw
‫Dockerfile.