Docker (mjukvara)
Originalförfattare | Solomon Hykes |
---|---|
Utvecklare | Docker, Inc. |
Initial release | 20 mars 2013 |
Stabil frisättning | |
Förvar | |
Skrivet i | Gå |
Operativ system | Linux , Windows , macOS |
Plattform | x86-64 , ARM , s390x , ppc64le |
Typ | Virtualisering på OS-nivå |
Licens | Gratis/betald |
Hemsida | docker.com |
Docker är en uppsättning PaaS-produkter ( plattform som en tjänst ) som använder virtualisering på OS-nivå för att leverera programvara i paket som kallas behållare . Tjänsten har både gratis- och premiumnivåer. Mjukvaran som är värd för behållarna kallas Docker Engine . Det startades först 2013 och är utvecklat av Docker, Inc.
Docker är ett verktyg som används för att automatisera distributionen av applikationer i lättviktsbehållare så att applikationer kan fungera effektivt i olika miljöer.
Bakgrund
Behållare är isolerade från varandra och paketerar sin egen programvara, bibliotek och konfigurationsfiler; de kan kommunicera med varandra genom väldefinierade kanaler. Eftersom alla behållare delar tjänsterna för en enda operativsystemkärna , använder de färre resurser än virtuella maskiner .
Drift
Docker kan paketera en applikation och dess beroenden i en virtuell behållare som kan köras på vilken Linux-, Windows- eller macOS-dator som helst. Detta gör att applikationen kan köras på en mängd olika platser, till exempel lokalt , offentligt ( se decentraliserad datoranvändning , distribuerad datoranvändning och molnberäkning ) eller privat moln . När Docker körs på Linux använder Docker resursisoleringsfunktionerna i Linux-kärnan (som cgroups och kärnnamnområden ) och ett fackligt filsystem (som OverlayFS ) för att tillåta behållare att köras inom en enda Linux-instans, vilket undviker overhead av starta och underhålla virtuella maskiner . Docker på macOS använder en virtuell Linux-maskin för att köra behållarna.
Eftersom Docker-containrar är lätta, kan en enda server eller virtuell maskin köra flera containrar samtidigt. En analys från 2018 visade att ett typiskt Docker-användningsfall innebär att köra åtta behållare per värd, och att en fjärdedel av de analyserade organisationerna kör 18 eller fler per värd. Den kan också installeras på en dator med en enda kort som Raspberry Pi .
Linuxkärnans stöd för namnutrymmen isolerar för det mesta en applikations syn på operativ miljö, inklusive processträd, nätverk, användar-ID:n och monterade filsystem, medan kärnans cgroups ger resursbegränsningar för minne och CPU. Sedan version 0.9 har Docker en egen komponent (kallad " libcontainer ") för att använda virtualiseringsfaciliteter som tillhandahålls direkt av Linux-kärnan, förutom att använda abstraherade virtualiseringsgränssnitt via libvirt , LXC och systemd-nspawn .
Docker implementerar ett högnivå- API för att tillhandahålla lättviktsbehållare som kör processer isolerat.
Licensmodell
- Docker Engine är licensierad under Apache License 2.0 . Docker Desktop distribuerar vissa komponenter som är licensierade under GNU General Public License.
- Dockerfile-filerna kan själva licensieras under en öppen källkod. Det är viktigt att inse att omfattningen av denna licensförklaring endast är Dockerfilen och inte containerbilden.
Komponenter
Docker-programvaran som en tjänst består av tre komponenter:
-
Programvara: Docker- demonen , kallad
dockerd
, är en ihållande process som hanterar Docker-containrar och hanterar containerobjekt. Demonen lyssnar efter förfrågningar som skickas via Docker Engine API. Docker-klientprogrammet, kallatdocker
, tillhandahåller ett kommandoradsgränssnitt (CLI), som tillåter användare att interagera med Docker-demoner. -
Objekt: Docker-objekt är olika enheter som används för att montera en applikation i Docker. Huvudklasserna av Docker-objekt är bilder, behållare och tjänster.
- En Docker-container är en standardiserad, inkapslad miljö som kör applikationer. En behållare hanteras med Docker API eller CLI .
- En Docker-bild är en skrivskyddad mall som används för att bygga behållare. Bilder används för att lagra och skicka applikationer.
- En Docker-tjänst tillåter att behållare skalas över flera Docker-demoner. Resultatet är känt som en svärm , en uppsättning samarbetande demoner som kommunicerar via Docker API.
- Register: Ett Docker-register är ett arkiv för Docker-avbildningar. Docker-klienter ansluter till register för att ladda ner ("pull") bilder för användning eller ladda upp ("push") bilder som de har byggt. Register kan vara offentliga eller privata. Det huvudsakliga offentliga registret är Docker Hub. Docker Hub är standardregistret där Docker letar efter bilder. Docker-register tillåter också skapandet av meddelanden baserade på händelser.
Verktyg
-
Docker Compose är ett verktyg för att definiera och köra Docker-applikationer med flera behållare. Den använder YAML- filer för att konfigurera applikationens tjänster och utför skapandet och uppstartsprocessen av alla behållare med ett enda kommando. Docker
som -compose
CLI-verktyget tillåter användare att köra kommandon på flera behållare samtidigt, till exempel bygga bilder, skala behållare, köra behållare stoppats och mer. Kommandon relaterade till bildmanipulation, eller användarinteraktiva alternativ, är inte relevanta i Docker Compose eftersom de adresserar en behållare. Filen docker-compose.yml används för att definiera ett programs tjänster och innehåller olika konfigurationsalternativ. Till exempelbuild
-alternativet konfigurationsalternativ som Dockerfile-sökvägen, kommandoalternativetlåter
en åsidosätta standard Docker-kommandon och mer. Den första offentliga betaversionen av Docker Compose (version 0.0.1) släpptes den 21 december 2013. Den första produktionsklara versionen (1.0) gjordes tillgänglig den 16 oktober 2014. -
Docker Swarm tillhandahåller inbyggd klustringsfunktion för Docker-behållare, vilket gör en grupp Docker-motorer till en enda virtuell Docker-motor. I Docker 1.12 och senare är Swarm-läget integrerat med Docker Engine. Docker
swarm
CLI-verktyget låter användare köra Swarm-behållare, skapa upptäcktstoken, lista noder i klustret och mer. Dockernode
CLI-verktyget tillåter användare att köra olika kommandon för att hantera noder i en svärm, till exempel lista noderna i en svärm, uppdatera noder och ta bort noder från svärmen. Docker hanterar svärmar med hjälp av Rafts konsensusalgoritm . Enligt Raft, för att en uppdatering ska kunna utföras, måste majoriteten av Swarm-noderna komma överens om uppdateringen. - Docker Volume underlättar den oberoende beständigheten av data, vilket gör att data kan finnas kvar även efter att behållaren har raderats eller återskapats.
Historia
Docker Inc. grundades av Kamel Founadi, Solomon Hykes och Sebastien Pahl under Y Combinator Summer 2010 startup incubator group och lanserades 2011. Startupen var också en av de 12 startups i Founder's Den första kohorten. Hykes startade Docker-projektet i Frankrike som ett internt projekt inom dotCloud , ett plattform-som-en-tjänst- företag.
Docker debuterade för allmänheten i Santa Clara på PyCon 2013. Den släpptes som öppen källkod i mars 2013. Vid den tiden använde den LXC som standardmiljö för exekvering. Ett år senare, med releasen av version 0.9, ersatte Docker LXC med sin egen komponent, libcontainer , som skrevs i programmeringsspråket Go .
2017 skapade Docker Moby-projektet för öppen forskning och utveckling.
Adoption
- 19 september 2013: Red Hat och Docker tillkännagav ett samarbete kring Fedora , Red Hat Enterprise Linux (RHEL) och OpenShift .
- 15 oktober 2014: Microsoft tillkännagav integrationen av Docker-motorn i Windows Server , samt inbyggt stöd för Docker-klientrollen i Windows.
- November 2014: Docker-containertjänster tillkännagavs för Amazon Elastic Compute Cloud (EC2).
- 10 november 2014: Docker tillkännagav ett partnerskap med Stratoscale .
- 4 december 2014: IBM tillkännagav ett strategiskt partnerskap med Docker som gör att Docker kan integreras närmare med IBM Cloud.
- 22 juni 2015: Docker och flera andra företag meddelade att de arbetar på en ny leverantörs- och operativsystemoberoende standard för mjukvarubehållare.
- December 2015: Oracle Cloud lade till Docker-containerstöd efter att ha förvärvat StackEngine , en Docker-containerstart.
- April 2016: Windocks, en oberoende mjukvaruleverantör släppte en port av Dockers projekt med öppen källkod till Windows, med stöd för Windows Server 2012 R2 och Server 2016, med alla utgåvor av SQL Server 2008 och framåt.
- Maj 2016: analys visade följande organisationer som huvudsakliga bidragsgivare till Docker: Docker-teamet, Cisco , Google , Huawei , IBM , Microsoft och Red Hat .
- 8 juni 2016: Microsoft meddelade att Docker nu kunde användas inbyggt på Windows 10 .
- Januari 2017: En analys av omnämnanden av LinkedIn -profiler visade att Docker-närvaron ökade med 160 % under 2016.
- 6 maj 2019: Microsoft tillkännagav den andra versionen av Windows Subsystem for Linux (WSL). Docker, Inc. meddelade att de har börjat arbeta på en version av Docker för Windows som körs på WSL 2. Detta innebär i synnerhet att Docker kan köras på Windows 10 Home (tidigare var det begränsat till Windows Pro och Enterprise eftersom det använde Hyper- V).
- Augusti 2020: Microsoft tillkännagav en backport av WSL2 till Windows 10 versionerna 1903 och 1909 (tidigare var WSL2 endast tillgänglig på version 2004) och Docker-utvecklare meddelade tillgängligheten av Docker för dessa plattformar.
- Augusti 2021: Docker Desktop för Windows och MacOS är inte längre gratis för företagsanvändare. Docker avslutade gratis Docker Desktop-användning för större företagskunder och ersatte dess gratisplan med en personlig plan. Docker på Linux-distributioner förblir opåverkad.
Se även
- DevOps
- DevOps verktygskedja
- gVisor
- Kubernetes
- Lista över Linux-behållare
- Mikrotjänster
- Virtualisering på OS-nivå
- Tjänstekomponentarkitektur
- Singularitet – Docker-alternativ för HPC-kluster
- Open Container Initiative