Siden kraftig maskinvare har blitt mer og mer av en vare, har muligheten til å kjøre flere virtuelle maskiner på et enkelt maskinvare blitt en industristandard. Fra web hosting til cloud computing kjøres mange tjenester på virtualiserte miljøer. I tillegg til desktop virtualiseringsløsninger som VirtualBox, er det også raske løsningsløsninger som Vagrant. Problemet med en virtuell maskin er at den trenger å etterligne alle aspekter av gjestedatamaskinen, inkludert alt system-RAM som vil bli allokert til den virtuelle maskinen. Som et resultat kan virtualisering være ressurs sulten.

I den andre enden av spekteret er et "chroot" -miljø som endrer den underliggende rotkatalogen for en prosess slik at den går i eget miljø og ikke har tilgang til andre filer på vertsoperativsystemet. Imidlertid er det ingen virtualisering i det hele tatt, bare et annet katalogtre.

Midtpunktet mellom disse to systemene er en beholder. Containere tilbyr mange av fordelene ved en virtualisert maskin, men uten den høye ressursomkostningen. Beholdere er mer funksjonelle enn chroot-miljøer fordi det er noen virtualisering. For eksempel blir prosesser som er opprettet i en beholder tilordnet ID-er (PID) separat fra de i verts-operativsystemet. I tekniske termer har containeren sitt eget PID navneområde. Faktisk har containere sitt eget navneområde for nettverkssystemet og for InterProcess Communication (IPC). Det betyr at en container kan kjøre nettverkstjenester, som en SSH-server eller en webserver.

Fra utsiden ser beholderen ut som en virtuell maskin med egen IP-adresse og egne nettverkstjenester, men på innsiden bruker beholderen mye mer av vertsoperativsystemet enn en virtuell maskin, mer som et "chroot" -miljø. For eksempel kan du bruke en CentOS-beholder som kjører på en Ubuntu-vert. Kommandoene og filene er alle fra CentOS, men hvis du spør beholderen hvilken kjernen den kjører, vil den rapportere at den kjører Ubuntu-kjernen, fordi containeren kjører på kjernen fra verts-operativsystemet.

Docker er et containerbasert virtualiseringsramme som lar deg lage containere som holder alle avhengighetene til et program. Hver beholder holdes isolert fra alle andre, og ingenting blir delt.

For å installere Docker på et 64-biters Ubuntu 14.04-system, kjør følgende kommandoer:

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

Det finnes en eksisterende Ubuntu-pakke som heter Docker, som er en systemstatusfelt for KDE3 / GNOME2. For å unngå forvirring kalles containerens kjøretid docker.io . Den siste kommandoen oppretter en kobling fra "/ usr / local / bin / docker" til "/usr/bin/docker.io", som gjør det mulig for dokkerkommandoen fra kommandolinjen i stedet for docker.io.

Merk : Docker.io er også tilgjengelig for andre distro. Her er installeringsinstruksjonene hvis du ikke bruker Ubuntu.

For å utføre et skall inne i beholderen, kjør:

 sudo docker kjøre -i-ubuntu / bin / bash 

" -i " -flagget gjør sesjonen interaktiv, og " -t " -flagget forteller docker å etterligne en terminal økt. Ubuntu-parameteren forteller docker å kjøre en container basert på Ubuntu 14.04 og "/ bin / bash" er kommandoen som skal kjøres når beholderen er opp, dvs. kjør Bash-skallet.

Når docker kjører, kontrollerer den om den ønskede basebildefilen tidligere har blitt lastet ned. Hvis den ikke har det, vil den laste ned bildet fra index.docker.io, som også er nettstedet som skal brukes til å se hvilke bilder som støttes av Docker.

For å laste ned andre bilder uten å starte en container, bruk kommandoen " docker pull ". For eksempel, for å laste ned CentOS-basebildet bruk:

 sudo docker pull centos 

Du kan også kjøre enkeltkommandoer i en beholder og la beholderen gå ut. Bruk følgende kommando for å kjøre " ps aux " -kommandoen inne i CentOS-beholderen:

 sudo docker kjøre centos ps aux 

Når en beholder lukkes, går alle endringer tapt. Fordelen ved denne tilnærmingen er at når en beholder starter, er den i en kjent tilstand. Dette er avgjørende for testmiljøer og for bygge-tjenester, etc. Det er også viktig for å kjøre skygtjenester, da beholderen raskt kan nullstilles og omstartes til en stabil tilstand.

Det betyr imidlertid også at enhver konfigurasjon som utføres, eller eventuelle filer som er opprettet i beholderen, vil gå tapt. Løsningen er å skape et nytt bilde med alle dine endringer. Prøv følgende kommandoer:

 sudo docker kjører ubuntu apt-get installer -y nmap sudo docker ps -l 

Den første kommandoen starter en container og installerer nmap. Den andre kommandoen viser den siste (-l) opprettede beholderen, selv om den ikke kjører.

Du kan nå lage et øyeblikksbilde av den aktuelle beholderen og lagre den på et nytt bilde:

 sudo docker begår 1b498c2d502c ubuntu-med-nmap 

"1b498c2d502c" er IDen til beholderen som oppført av " docker ps -l " -kommandoen. Nå hvis du starter et skall for ubuntu-med-nmap- beholderen, vil det ha kommandoen nmap forhåndsinstallert.

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

Det er rikelig med informasjon om docker i dokuments dokumentasjon, og det er også forklart flere eksempeloppsett, inkludert hvordan du utfører vanlige oppgaver som å kjøre en python webapp og kjører en SSH-tjeneste.

Hvis du har spørsmål om docker, er det et sterkt docker-fellesskap som skal kunne hjelpe. Du kan også stille spørsmål i kommentarfeltet nedenfor og vi vil se om vi kan hjelpe.