Eftersom kraftig hårdvara har blivit mer och mer av en vara har möjligheten att köra flera virtuella maskiner på ett enda hårdvara blivit en branschstandard. Från webbhotell till cloud computing körs många tjänster i virtualiserade miljöer. Förutom datorbaserade virtualiseringslösningar som VirtualBox finns det också snabba leveranslösningar som Vagrant. Problemet med en virtuell maskin är att den behöver emulera alla aspekter av gästdatorn, inklusive allt systemminne som allokeras exklusivt till den virtuella maskinen. Som ett resultat kan virtualisering vara resurs hungrig.

I den andra änden av spektret är en "chroot" -miljö som ändrar den underliggande rotkatalogen för en process så att den går i sin egen miljö och inte har tillgång till andra filer på värdoperativsystemet. Det finns dock ingen virtualisering alls, bara ett annat katalogträd.

Mittenpunkten mellan dessa två system är en behållare. Containrar erbjuder många av fördelarna med en virtualiserad maskin men utan höga resurser. Behållare är mer funktionella än chroot-miljöer genom att det finns viss virtualisering. Processer som skapas i en behållare tilldelas exempelvis ID: er (PID) separat från de som finns i värd-operativsystemet. I tekniska termer har behållaren ett eget PID-namnrymd. Faktum är att behållare har eget namnutrymme för nätverksdelsystemet och för InterProcess Communication (IPC). Det innebär att en behållare kan köra nätverkstjänster, som en SSH-server eller en webbserver.

Från utsidan ser behållaren ut som en virtuell maskin med egen IP-adress och egna nätverkstjänster, men på insidan använder behållaren mycket mer av värdoperativsystemet än en virtuell maskin, mer som en "chroot" -miljö. Till exempel kan du använda en CentOS-behållare som körs på en Ubuntu-värd. Kommandon och filer är alla från CentOS, men om du frågar behållaren vilken kärna den körs kommer den att rapportera att den kör Ubuntu-kärnan, eftersom behållaren körs på kärnan från värd-operativsystemet.

Docker är en containerbaserad virtualiseringsram som gör att du kan skapa behållare som håller alla beroenden för en applikation. Varje behållare hålls isolerad från någon annan och ingenting delas.

För att installera Docker på ett 64-bitars Ubuntu 14.04-system, kör följande kommandon:

 sudo apt-get uppdatering sudo apt-få installera docker.io sudo ln -sf /usr/bin/docker.io / usr / local / bin / docker 

Det finns ett existerande Ubuntu-paket som heter Docker, vilket är ett systemfält för KDE3 / GNOME2. För att undvika förvirring kallas container runtime docker.io . Det sista kommandot skapar en länk från "/ usr / local / bin / docker" till "/usr/bin/docker.io", vilket möjliggör dockerkommandot från kommandoraden i stället för docker.io.

Obs! Docker.io är också tillgänglig för andra distro. Här är installationsanvisningarna om du inte använder Ubuntu.

För att köra ett skal inuti behållaren kör:

 sudo docker kör -i -t ubuntu / bin / bash 

" -i " -flaggan gör sessionen interaktiv, och " -t " -flaggan berättar dockaren för att efterlikna en terminalsession. Parametern "ubuntu" berättar dockaren att köra en behållare baserad på Ubuntu 14.04 och "/ bin / bash" är det kommando som ska köras när behållaren är upp, dvs kör Bash-skalet.

När docker körs kontrollerar den om den önskade basbildfilen tidigare har hämtats. Om den inte har det kommer den att hämta bilden från index.docker.io, vilket också är webbplatsen som ska användas för att se vilka bilder som officiellt stöds av dockningsenheten.

För att ladda ner andra bilder utan att starta en behållare, använd docker pull " docker pull ". Till exempel, för att ladda ner CentOS-basbildsanvändningen:

 sudo docker pull centos 

Du kan också köra enskilda kommandon i en behållare och sedan låta behållaren gå ut. Använd följande kommando för att köra " ps aux " -kommandot inne i CentOS-behållaren:

 sudo docker kör centos ps aux 

När en behållare stängs av förloras alla ändringar. Fördelen med detta tillvägagångssätt är att när en behållare börjar är den i ett känt tillstånd. Detta är viktigt för testmiljöer och för byggnadstjänster, etc. Det är också viktigt att driva molntjänster, eftersom behållaren snabbt kan återställas och omstartas till ett stabilt tillstånd.

Det betyder emellertid också att någon konfiguration som utförts eller om filer som skapats i behållaren kommer att gå vilse. Lösningen är att skapa en ny bild med alla dina ändringar. Prova följande kommandon:

 sudo docker kör ubuntu apt-get installera -y nmap sudo docker ps -l 

Det första kommandot startar en behållare och installerar nmap. Det andra kommandot listar den senaste (-l) skapade behållaren, även om den inte körs.

Du kan nu skapa en stillbild av den behållaren och spara den till en ny bild:

 sudo docker commit 1b498c2d502c ubuntu-med-nmap 

"1b498c2d502c" är behållarens ID som anges av docker ps -l " docker ps -l ". Nu om du startar ett skal för ubuntu-with-nmap- behållaren, kommer det att ha kommandot nmap förinstallerat.

 sudo docker kör -i-ubuntu-med-nmap / bin / bash 

Det finns mycket information om docker i docker.io: s dokumentation, och det finns också flera exempeluppställningar förklarade, bland annat hur man utför vanliga uppgifter som att köra en pythonwebapp och kör en SSH-tjänst.

Om du har några frågor om dockare finns det en stark dockningsgrupp som borde kunna hjälpa till. Du kan också ställa frågor i kommentarfältet nedan och vi kommer se om vi kan hjälpa till.