Debuggen
Debuggen van draaiende containers
Net zoals met alle software systemen en applicaties kan er ook in een docker container vanalles mis gaan. Het is handig om bepaalde commando's te kennen die je kunnen helpen deze problemen snel te debuggen.
docker execom commando's in de docker container te kunnen draaien (cat,touch,echo, een shell openen)docker inspectom de configuratie van een docker container te bekijken / bestuderendocker logsom de logs van een file te bekijken (stdout, stderr)
Uitgelegd aan de hand van een voorbeeld
Je vindt de code die gebruikt wordt in dit voorbeeld ook terug op github.
In het voorbeeld wordt een simpele NodeJS web server opgestart. In de web server zijn intentioneel wat foutjes gestoken die ervoor zorgen dat er zich een crash kan voordoen.
Wanneer je de server start en een API call doet naar GET http://localhost:3000/crash dan zal de server crashen en bijgevolg ook de container.
Je kan zien dat de container gecrasht is door docker ps -a te doen en te zien dat de container gestopt is.
Een goede eerste stap is vaak om de logs van de container te bekijken:
docker log <container_id>
Hieruit zal je al kunnen afleiden of de applicatie zelf een error naar de stderr of stdout gelogd heeft.
Stel dat je per ongeluk GET http://localhost:8080/crash hebt proberen doen en een 404 terugkrijgt, dan kan je met best even controleren hoe de container geconfigureerd is om op te starten.
docker inspect <container_id>
Hiermee vind je ondermeer de netwerkconfiguratie terug. Je kan bijvoorbeeld ook zien welke environment variabelen ingesteld zijn, en of je niet vergeten bent een parameter toe te voegen in de .env file.
Opruimen van ongebruikte resources (docker prune, docker system df)
docker system dfwordt gebruikt om te inspecteren wat er opgeruimd kan wordendocker pruneis om alle ongebruikte resources op te kuisen