Docker för nybörjare: Allt du behöver veta

0
190

Docker skapar paketerade applikationer som kallas containrar. Varje container ger en isolerad miljö som liknar en virtuell maskin (VM). Till skillnad från virtuella datorer kör inte Docker-containrar ett fullständigt operativsystem. De delar din värdens kärna och virtualiseras på programvarunivå.

Docker Basics

Docker har blivit ett standardverktyg för programutvecklare och systemadministratörer. Det är ett snyggt sätt att snabbt starta applikationer utan att påverka resten av ditt system. Du kan snurra upp en ny tjänst med ett enda docker-körkommando.

Behållare inkapslar allt som behövs för att köra ett program, från OS-paketberoende till din egen källkod. Du definierar en container skapande steg som instruktioner i en Dockerfil. Docker använder Dockerfilen för att konstruera en bild.

Bilder definierar programvaran som finns i containrar. Detta motsvarar löst att starta en virtuell dator med ett operativsystem ISO. Om du skapar en bild kommer alla Docker-användare att kunna starta din app med docker-körning.

Hur fungerar Docker?

Behållare använder operativsystemets kärnfunktioner för att tillhandahålla delvis virtualiserade miljöer. Det är möjligt att skapa containrar från grunden med kommandon som chroot. Detta startar en process med en angiven rotkatalog istället för systemrot. Men att använda kärnfunktioner direkt är fiddly, osäker och felbenägen.

Annonsering

Docker är en komplett lösning för produktion, distribution och användning av containrar. Moderna Docker-utgåvor består av flera oberoende komponenter. För det första finns Docker CLI, vilket är vad du interagerar med i din terminal. CLI skickar kommandon till en Docker-demon. Detta kan köras lokalt eller på en fjärrvärd. Demonen ansvarar för hanteringen av containrar och de bilder de skapas från.

Den sista komponenten kallas containerns körtid. Runtiden åberopar kärnfunktioner för att faktiskt starta containrar. Docker är kompatibel med driftstider som följer OCI-specifikationen. Denna öppna standard möjliggör interoperabilitet mellan olika behållarverktyg.

Du behöver inte oroa dig för mycket för Docker inre arbete när du först kommer igång. Genom att installera docker i ditt system får du allt du behöver för att bygga och köra containrar.

Varför använder så många människor Docker?

Behållare har blivit så populära eftersom de löser många vanliga utmaningar inom mjukvaruutveckling. Möjligheten att containerisera en gång och springa överallt minskar klyftan mellan din utvecklingsmiljö och dina produktionsservrar.

Att använda containrar ger dig förtroende för att varje miljö är identisk. Om du har en ny teammedlem behöver de bara docka för att konfigurera sin egen utvecklingsinstans. När du startar din tjänst kan du använda din Docker-avbild för att distribuera till produktion. Livemiljön matchar exakt din lokala instans och undviker & # 8220; det fungerar på min maskin & # 8221; scenarier.

Docker är bekvämare än en virtuell maskin. Virtuella datorer är allmänna verktyg som är utformade för att stödja alla möjliga arbetsbelastningar. Däremot är behållare lätta, självförsörjande och bättre lämpade för bortkastningsfall. Eftersom Docker delar värdens kärna har containrar en försumbar inverkan på systemets prestanda. Starttid för behållare är nästan omedelbar, eftersom du bara startar processer, inte ett helt operativsystem.

Komma igång

Docker finns på alla populära Linux-distributioner. Det körs också på Windows och macOS. Följ installationsanvisningarna för Docker för din plattform för att få den igång.

Annons

Du kan kontrollera att din installation fungerar genom att starta en enkel behållare:

docker run hello-world

Detta startar en ny container med den grundläggande hello-world-bilden. Bilden avger en del utdata som förklarar hur man använder Docker. Containern lämnar sedan och släpper tillbaka dig till din terminal.

Skapa bilder

När du väl har kört hej-världen är du redo att skapa dina egna Docker-bilder. En Dockerfile beskriver hur du kör din tjänst genom att installera nödvändig programvara och kopiera i filer. Här är ett enkelt exempel med hjälp av Apache-webbservern:

FRÅN httpd: senaste RUN-eko “LoadModule headers_module modules/mod_headers.so” & gt; & gt; /usr/local/apache2/conf/httpd.conf COPY .htaccess /var/www/html/.htaccess COPY index.html /var/www/html/index.html COPY css//var/www/html/css < p> FROM-raden definierar basbilden. I det här fallet börjar vi från den officiella Apache-bilden. Docker tillämpar de återstående instruktionerna i din Dockerfil överst på basbilden.

RUN-steget kör ett kommando i behållaren. Detta kan vara vilket kommando som helst som är tillgängligt i behållarens miljö. Vi aktiverar rubriken Apache-modul, som kan användas av .htaccess-filen för att ställa in routningsregler.

Annonsering

De sista raderna kopierar HTML- och CSS-filerna i din arbetskatalog in i behållarbilden. Din bild innehåller nu allt du behöver för att köra din webbplats.

Nu kan du skapa bilden:

docker build -t my-website: v1.

Docker använder din Dockerfil för att konstruera bilden. Du ser utdata i din terminal när Docker kör var och en av dina instruktioner.

-T i kommandot taggar din bild med ett givet namn (min webbplats: v1). Detta gör det lättare att hänvisa till i framtiden. Taggar har två komponenter, åtskilda av ett kolon. Den första delen ställer in bildnamnet, medan den andra brukar beteckna dess version. Om du utelämnar kolon, använder Docker som standard den senaste som taggversionen.

The. i slutet av kommandot ber Docker att använda Dockerfilen i din lokala arbetskatalog. Detta ställer också in byggkontext, så att du kan använda filer och mappar i din arbetskatalog med COPY-instruktioner i din Dockerfile.

När du har skapat din bild kan du starta en container med docker run :

docker kör -d -p 8080: 80 min webbplats: v1

Vi använder några extra flaggor med docker som körs här. Flaggan -d gör att Docker CLI lossnar från behållaren så att den kan köras i bakgrunden. En portmappning definieras med -p, så port 8080 på din värd mappar till port 80 i behållaren. Du bör se din webbsida om du besöker localhost: 8080 i din webbläsare.

Annons

Dockerbilder bildas från lager. Varje instruktion i din Dockerfile skapar ett nytt lager. Du kan använda avancerade byggfunktioner för att referera till flera basbilder och kasta mellanliggande lager från tidigare bilder.

Bildregister

När du har en bild kan du driva det till ett register. Register tillhandahåller centraliserad lagring så att du kan dela containrar med andra. Standardregistret är Docker Hub.

När du kör ett kommando som refererar till en bild kontrollerar Docker först om det är tillgängligt lokalt. Om det inte är det kommer det att försöka dra det från Docker Hub. Du kan dra bilder manuellt med dockarens pull-kommando:

docker pull httpd: senaste

Om du vill publicera en bild, skapa ett Docker Hub-konto. Kör dockerinloggning och ange ditt användarnamn och lösenord.

Tagga sedan din bild med ditt Docker Hub-användarnamn:

docker-tagg min-bild: senaste docker-hub-användarnamn/min-bild: senaste

Nu kan du trycka på din bild:

docker push docker-hub-username/my-image: senaste

Andra användare kommer att kunna dra din bild och starta containrar med den.

Annons

Du kan köra ditt eget register om du behöver privat bildlagring. Flera tjänster från tredje part erbjuder också Docker-register som alternativ till Docker Hub.

Hantera dina behållare

Docker CLI har flera kommandon för att låta dig hantera dina körcontainrar. Här är några av de mest användbara att veta:

Listningsbehållare

docker ps visar dig alla dina containrar som körs. Att lägga till flaggan -a visar också stoppade behållare.

Stoppa och starta behållare

För att stoppa en container, kör docker stop my-container. Byt ut min behållare med behållarens namn eller ID. Du kan få denna information från ps-kommandot. En stoppad behållare startas om med docker starta min behållare.

Behållare kör vanligtvis så länge som deras huvudprocess förblir vid liv. Startpolicyer styr vad som händer när en container stannar eller om din värd startar om. Skicka – starta alltid om till docker-körning för att starta en container omedelbart efter att den har slutat. en container med docker exec my-container my-command. Detta är användbart när du vill manuellt åberopa en körbar fil som är separat för behållarens huvudprocess.

Annons

Lägg till flaggan -it om du behöver interaktiv åtkomst. Detta låter dig falla in i ett skal genom att köra docker execit mitt-container sh.

Övervakningsloggar

Docker samlar automatiskt utdata som sänds ut till en behållares standardinmatnings- och utmatningsströmmar. Dockarloggarna mitt-container-kommando visar en containerns loggar inuti din terminal. Flaggan –follow ställer in en kontinuerlig ström så att du kan visa loggar i realtid.

Rensa resurser

Gamla containrar och bilder kan snabbt staplas upp i ditt system. Använd docker rm my-container för att radera en container efter dess ID eller namn.

Kommandot för bilder är docker rmi my-image: senaste. Skicka bildens ID eller fullständiga taggnamn. Om du anger en tagg kommer bilden inte att raderas förrän den inte har tilldelats fler taggar. Annars tas den givna taggen bort men bildens andra taggar förblir användbara.

Städningar i bulk är möjliga med kommandot docker beskärning. Detta ger dig ett enkelt sätt att ta bort alla stoppade containrar och överflödiga bilder.

Grafisk hantering

Om terminalen inte är din grej, du kan använda tredjepartsverktyg för att ställa in ett grafiskt gränssnitt för Docker. Med webbdashboards kan du snabbt övervaka och hantera din installation. De hjälper dig också att ta fjärrkontroll av dina containrar.

Persistent Data Storage

Docker-behållare är flyktiga som standard. Ändringar som görs i behållarens filsystem kommer inte att kvarstå efter att containern stannar. Det är inte säkert att köra någon form av fillagringssystem i en container som startas med ett grundläggande docker-körkommando.

Annons

Det finns några olika sätt att hantera ihållande data. Det vanligaste är att använda en Docker-volym. Volymer är lagringsenheter som monteras i containerfilsystem. Alla data i en volym förblir intakta efter att den länkade behållaren slutar, så att du kan ansluta en annan behållare i framtiden.

Upprätthålla säkerhet

Dockariserade arbetsbelastningar kan vara säkrare än deras motsvarigheter i ren metall, eftersom Docker ger en viss åtskillnad mellan operativsystemet och dina tjänster. Ändå är Docker ett potentiellt säkerhetsproblem, eftersom det normalt körs som root och kan utnyttjas för att köra skadlig programvara.

Om du bara kör Docker som ett utvecklingsverktyg är standardinstallationen vanligtvis säker att använda. Produktionsservrar och maskiner med ett nätverksexponerat daemon-uttag bör härdas innan du går live.

Granska din Docker-installation för att identifiera potentiella säkerhetsproblem. Det finns automatiserade verktyg som kan hjälpa dig att hitta svagheter och föreslå lösningar. Du kan också skanna enskilda containerbilder för problem som kan utnyttjas inifrån.

Arbeta med flera behållare

Dockerkommandot fungerar bara med en container i taget. Du vill ofta använda containrar tillsammans. Docker Compose är ett verktyg som låter dig definiera dina containrar deklarativt i en YAML-fil. Du kan starta upp dem alla med ett enda kommando.

Detta är användbart när ditt projekt beror på andra tjänster, till exempel en webbbackend som är beroende av en databasserver. Du kan definiera båda behållarna i din docker-compose.yml och dra nytta av strömlinjeformad hantering med automatiskt nätverk.

Här är en enkel docker-compose.yml-fil:

version: “3” tjänster: app: image: app-server: senaste portar: – 8000: 80 databas: image: database-server: senaste volymer: – databas-data:/datavolymer: databas-data: Annons

Detta definierar två behållare (app och databas). En volym skapas för databasen. Detta monteras på/data i behållaren. Appservern port 80 exponeras som 8000 på värden. Kör docker-compose up -d för att spinna upp båda tjänsterna, inklusive nätverket och volymen.

Användningen av Docker Compose låter dig skriva återanvändbara containerdefinitioner som du kan dela med andra. Du kan begå en docker-compose.yml i din versionskontroll istället för att låta utvecklare memorera dockerkörningskommandon.

Det finns andra sätt att köra flera containrar också. Docker App är en framväxande lösning som ger en annan abstraktionsnivå. På andra håll i ekosystemet är Podman ett Docker-alternativ som låter dig skapa & # 8220; skida & # 8221; av containrar i din terminal.

Container Orchestration

Docker körs normalt inte som det är i produktion. Det är nu vanligare att använda en orkestrationsplattform som Kubernetes eller Docker Swarm-läge. Dessa verktyg är utformade för att hantera flera containerreplikat, vilket förbättrar skalbarhet och tillförlitlighet.

Docker är bara en komponent i den bredare containeriseringsrörelsen. Orchestrators använder samma container-runtime-teknik för att ge en miljö som passar bättre för produktion. Användning av flera containerinstanser möjliggör rullande uppdateringar samt distribution över maskiner, vilket gör din distribution mer motståndskraftig mot förändring och avbrott. Den vanliga dockern CLI riktar sig mot en värd och arbetar med enskilda behållare.

En kraftfull plattform för behållare

Docker ger dig allt du behöver för att arbeta med containrar. Det har blivit ett viktigt verktyg för programutveckling och systemadministration. De viktigaste fördelarna är ökad isolering och portabilitet för enskilda tjänster.

Annonsering

Att lära känna Docker kräver en förståelse för de grundläggande behållar- och bildkoncepten. Du kan använda dessa för att skapa dina specialiserade bilder och miljöer som behåller dina arbetsbelastningar.

LÄS NÄSTA

  • & rsaquo; Så här styr du ditt smarta hem från Android snabbinställningar
  • & rsaquo; Hur man konverterar ett Word-dokument till en PowerPoint-presentation
  • & rsaquo; Vad är Amazon Echo Auto och hur fungerar det?
  • & rsaquo; Så här kontrollerar du din skärmupplösning i Windows 10
  • & rsaquo; Hur får jag tillbaka Windows 10: s aktivitetsfältets widget