Da kraftig hardware er blevet mere og mere af en vare, er evnen til at køre flere virtuelle maskiner på et enkelt stykke hardware blevet en industristandard. Fra web hosting til cloud computing køres mange tjenester på virtualiserede miljøer. Ud over desktop virtualiseringsløsninger som VirtualBox, er der også hurtige løsninger som Vagrant. Problemet med en virtuel maskine er, at den skal efterligne alle aspekter af gæstcomputeren, herunder alt system-RAM, som udelukkende vil blive tildelt den virtuelle maskine. Som et resultat kan virtualisering være ressource sulten.

I den anden ende af spektret er et "chroot" -miljø, som ændrer den underliggende rodmappe til en proces, så den kører i sit eget miljø og ikke har adgang til andre filer på værtsoperativsystemet. Der er dog slet ingen virtualisering, bare et andet katalogtræ.

Midtpunktet mellem disse to systemer er en beholder. Containere tilbyder mange af fordelene ved en virtualiseret maskine, men uden den høje ressourceoverhead. Beholdere er mere funktionelle end chroot-miljøer, fordi der er en vis virtualisering. For eksempel tildeles processer, der oprettes i en container, ID'er (PID'er) separat fra dem i værts-operativsystemet. Teknisk set har containeren sit eget PID navneområde. Faktisk har containere deres eget navneområde til netværksundersystemet og til InterProcess Communication (IPC). Det betyder, at en container kan køre netværkstjenester, som en SSH-server eller en webserver.

Fra ydersiden ser beholderen ud som en virtuel maskine med sin egen IP-adresse og sine egne netværkstjenester, men på indersiden bruger beholderen langt mere af værtsoperativsystemet end en virtuel maskine, mere som et "chroot" -miljø. Du kan f.eks. Bruge en CentOS-container, der kører på en Ubuntu-vært. Kommandoer og filer er alle fra CentOS, men hvis du spørger beholderen hvilken kerne den kører, vil den rapportere, at den kører Ubuntu-kernen, fordi containeren kører på kernen fra værts-operativsystemet.

Docker er en containerbaseret virtualiseringsramme, der giver dig mulighed for at oprette containere med alle afhængigheder til en applikation. Hver beholder holdes isoleret fra alle andre, og intet bliver delt.

For at installere Docker på et 64-bit Ubuntu 14.04-system, skal du køre følgende kommandoer:

 sudo apt-get opdatering sudo apt-get install docker.io sudo ln -sf /usr/bin/docker.io/ usr / local / bin / docker 

Der er en eksisterende Ubuntu-pakke kaldet docker, som er en systembakke til KDE3 / GNOME2. For at undgå forvirring kaldes container runtime docker.io . Den sidste kommando skaber et link fra "/ usr / local / bin / docker" til "/usr/bin/docker.io", som muliggør dockerkommandoen fra kommandolinjen i stedet for docker.io.

Bemærk : Docker.io er også tilgængelig for andre distro. Her er installationsvejledningen, hvis du ikke bruger Ubuntu.

For at udføre en skal inde i beholderen, kør:

 sudo docker run -i -t ubuntu / bin / bash 

" -i " -flaget gør sessionen interaktiv, og " -t " -flaget fortæller docker at efterligne en terminal session. Ubuntu-parameteren fortæller docker at køre en container baseret på Ubuntu 14.04, og "/ bin / bash" er den kommando, der skal køres, når beholderen er op, dvs. køre Bash-skalen.

Når docker kører kontrollerer den, om den ønskede basebilledfil tidligere er blevet downloadet. Hvis det ikke har det, vil det hente billedet fra index.docker.io, hvilket også er det websted, der skal bruges til at se, hvilke billeder der officielt understøttes af docker.

For at downloade andre billeder uden at starte en container, brug kommandoen " docker pull ". For eksempel at downloade CentOS basebillede brug:

 sudo docker pull centos 

Du kan også køre enkeltkommandoer i en beholder og derefter lade beholderen gå ud. Brug følgende kommando til at køre kommandoen " ps aux " inde i CentOS-beholderen:

 sudo docker køre centos ps aux 

Når en beholder lukkes, går alle ændringer tabt. Fordelen ved denne fremgangsmåde er, at når en beholder starter, er den i en kendt tilstand. Dette er afgørende for testmiljøer og for byggetjenester mv. Det er også vigtigt at køre sky-tjenester, da beholderen hurtigt kan nulstilles og genstartes i en stabil tilstand.

Det betyder dog også, at enhver konfiguration, der udføres, eller eventuelle filer, der oprettes i containeren, vil gå tabt. Løsningen er at skabe et nyt billede med alle dine ændringer. Prøv følgende kommandoer:

 sudo docker køre ubuntu apt-get install -y nmap sudo docker ps -l 

Den første kommando starter en container og installerer nmap. Den anden kommando viser den seneste (-l) oprettede beholder, selvom den ikke kører.

Du kan nu oprette et øjebliksbillede af den pågældende beholder og gemme det til et nyt billede:

 sudo docker commit 1b498c2d502c ubuntu-med-nmap 

"1b498c2d502c" er beholderens ID som angivet af kommandoen " docker ps -l ". Nu, hvis du starter en shell til ubuntu-with-nmap- beholderen, vil den have kommandoen nmap forudinstalleret.

 sudo docker køre -i-ubuntu-med-nmap / bin / bash 

Der er masser af information om docker i doker.io's dokumentation, og der er også flere eksempler på opsætninger forklaret, herunder hvordan man udfører almindelige opgaver som at køre en python webapp og køre en SSH-tjeneste.

Hvis du har spørgsmål om docker, er der et stærkt docker-fællesskab, som skal kunne hjælpe. Du kan også stille spørgsmål i kommentarfeltet nedenfor, og vi vil se, om vi kan hjælpe.