Vad tusan är Docker?

13 jun 2017

Har du dunderkoll på hur man virtualiserar operativsystem? Helt ärligt så är det inte vardagsmat för oss heller. Däremot kan våra utvecklare det mesta som är värt att veta på området. Vi lät vår back end developer Jonas förklara lite närmare.

Hur funkar det egentligen?

Tidigare har hosting av applikationer inneburit en hårdvara per applikation, vilket ofta gav onödiga kostnader varje gång en ny applikation skulle lanseras. För att lösa problemet så började det virtualiseras operativsystem genom så kallade virtuella maskiner. Det innebar att flera applikationer kunde dela på samma serverutrymme. Både smart och smidigt. Problemet var bara att varje virtuell maskin hade ett eget operativsystem. Helt klart en flaskhals för prestanda och utrymme på servern. För att kunna spara det utrymme som användes av operativsystemet och dess drivrutiner så introducerades Docker.

Ett skepp kommer lastat

Docker beskrivs som ett fraktskepp (av engelskans docker ship) där de applikationer som hanteras fungerar som en container. En container kan också liknas vid en sandbox som applikationen lever i. För att starta upp en applikation i en container så behövs oftast en specifik programvara, eller som Docker kallar det, Images. En image kan vara en webbserver som exempelvis nginx, databaser som mysql och mongodb eller en specifik version av Java.


Images finns att hämta hos Docker i det som kallas Docker Hub. Här kan vem som helst lägga upp Images i form av egna applikationer eller så kallade tweaks av andra Images, men de mest användbara är de som kommer från de kända, officiella repositories. Den typen av Images hittar du här: hub.docker.com/explorelänk till annan webbplats, öppnas i nytt fönster. Ibland vill man ha ett paket som finns på Docker Hub, men kunna trigga script för npm eller yarn (beroende på vem av oss du frågar), composer install, flytta in sin applikation till /var/www/ osv. Det gör vi genom att skriva instruktioner i en Dockerfile.

Docker kan även koppla ihop olika containers. Det är en enorm fördel då en container exempelvis ska hosta php 7.1 (för t.ex. Wordpress eller Laravel) samt en databas såsom MySQL, Mariadb eller Cassandra.

Hur använder Strateg Docker?

Vi har nytta av Docker när vi till exempel utvecklar en applikation till någon av våra kunder. För att kunna visa upp denna för kund så mappar vi en subdomän av vår utvecklingsdomän mot en container där vi har applikationen. Vi använder oss också av Rancher som fungerar som ett fönster för att kunna få ett interface för våra containers och för att kunna gruppera dem för lättare översikt.

Varning! Nu blir det riktigt nördigt

Nu kanske vi tappat några av er. Men för er som fortfarande vill gå lite djupare tittar vi på hur en Dockerfile kan se ut:

 

Dockerfil

 

Här ser vi att vi plockar en Image från PHP-repositoriet. Då den laddats ner så uppdaterar vi paket, sätter PHP-inställningar och diverse Apache-inställningar från lokala filer. Det gör att vi kan skriva containrar som passar perfekt för applikationens ändamål.

 

Docker används mycket för VPS:er världen över, men är självklart även smidigt att använda lokalt. Precis som vi kan specifiera miljön för containern publikt så kan vi använda samma container lokalt. Det passar perfekt för att försäkra sig om vad fungerar på våra maskiner lokalt, eftersom det kommer att fungera lika bra för en container som ligger remote.

 

Har du inte fått nog än? Jag förstår dig. Hör gärna av dig så snackar vi mer om Docker.

 

Jonas Lilja

Back end developer

Mail: jonas.lilja@strateg.se

Github: www.github.com/jliljalänk till annan webbplats, öppnas i nytt fönster