Docker har tagit världen med storm sedan starten 2013. Om du är en erfaren programmerare som skapar innovation med hjälp av moderna stackar, är chansen stor att du har arbetat med eller åtminstone hört talas om docker. Oroa dig inte om du är nybörjare och kämpar för att förstå Docker.
Vi har förberett den här guiden för att introducera docker för nybörjare och beskrivit de 40 mest användbara kommandona. Även om docker inte bara handlar om kommandon och gränssnitt, kommer att behärska de grundläggande kommandona hjälpa dig att visualisera hur det fungerar nästan utan ansträngning.
Docker Fundamentals
Docker började som en virtualiseringsleverantör på OS-nivå för sex år sedan, vilket gjorde det möjligt för utvecklare att distribuera sina produkter i containrar. Du kan tänka på behållare som mini-virtuella maskiner.
Den tillhandahåller funktioner som liknar Linux VMware-verktyg men kräver mycket låga CPU-resurser. Som ett resultat kan företag distribuera tusentals produkter på en enda plattform.
Docker uppnår denna låga resursförbrukning genom sin design. Det ger mindre isolering än fristående VMware-gästmaskiner och tar bort många oönskade funktioner som inte krävs av applikationer som körs på servrar.
Så att välja en från Docker och fullfjädrade hypervisorer som VMware beror enbart på projektkraven.
En annan praktisk funktion hos docker är att den ger exakta miljöer för dina produkter. Anta att du bygger en mobilapp och vill dela projektet med medarbetare.
—
Vanligtvis behöver de ladda ner de exakta biblioteken och ramverken med samma version som din app kräver. Det leder till olika konfigurationsproblem och minskar utvecklingsinsatserna avsevärt.
Resurslänk: 20 användbara Docker-volymkommandoexempel för moderna utvecklare
Eftersom docker skapar en bild av produktmiljön kan alla dina medarbetare ladda ner och använda den här bilden oavsett deras systemkonfiguration. Docker hämtar och bygger miljön helt själv. Du kommer att lära dig det mesta via våra exempel.
Förstå Dockerfile
I Docker är Dockerfilen den komponent som låter oss definiera miljön för ett verktyg. Det är en textfil som innehåller instruktioner skrivna i ett format som docker runtime kan förstå. Att skapa och hantera Dockerfiler är enkelt. Så vi lämnar den syntaktiska studien av Dockerfiles för en annan dag.
I praktiken kommer du att använda Dockerfilen för att definiera de paket som används av din applikation, hämta och bygga dem. När du delar denna Dockerfil med medarbetare kan de enkelt ställa in miljön genom att använda Docker för att bygga den här bilden.
Förhoppningsvis kommer denna enkla men väsentliga kunskap att räcka för att hjälpa dig förstå de kommandon vi diskuterar idag.
Användbara Docker-kommandon att bemästra
Docker har växt enormt sedan dess tidiga dagar. Idag erbjuder det flera tjänster som sträcker sig över olika virtualiseringsbehov. Så det finns en uppsjö av kommandon tillgängliga för docker cli. Våra redaktörer har valt ut de mest använda kommandona eftersom de hjälper dig att förstå kärnkoncepten bättre.
Grundläggande Docker-kommandon för nybörjare
Vi diskuterar dockers grundläggande kommandon i följande avsnitt. De hjälper dig att snurra upp dina containrar och ge välbehövlig insikt om docker.
1. Skapa en behållare med bilder från Docker Hub
De Docker Hub är det officiella Docker-förrådet för Docker-bilder. Den innehåller tusentals förbyggda bilder skapade av utvecklare och företag med öppen källkod. Du kan enkelt snurra upp en fungerande docker-container med hjälp av en bild från detta arkiv.
$ docker create -it ubuntu:xenial bash
Ovanstående kommando hämtar Ubuntu Xenial-bilden från Docker Hub och skapar en behållare med den här bilden. Flaggan -it säger åt hamnarbetaren att lägga till den integrerade terminalen till denna behållare. Dessutom säger bash-delen till docker att köra bash-kommandot.
2. Lista Docker-containrar
När du har skapat den vill du kontrollera om behållaren har skapats eller inte. Kommandot ps säger åt docker att lista de aktuella behållarna.
$ docker ps
Chansen är stor att det här kommandot inte visar några körande behållare. Det händer för att du inte har startat din dockercontainer än. Du kan dock använda -a flagga för att tala om för hamnarbetaren att lista alla containrar.
$ docker ps -a
Detta kommando bör visa behållaren du skapade i föregående kommando.
3. Starta din container
För att använda dina containrar i docker måste du starta dem först. Docker start-kommandot låter dig göra detta snabbt, som visas i nästa exempel.
$ docker start CONTAINER_ID
Här, CONTAINER_ID är id:t för din behållare. Du får detta när du kör kommandot docker ps -a. Kopiera det därifrån och använd det för det här exemplet. Det kommer att starta din behållare inom några sekunder.
4. Ansluta till din behållare
När du har startat framgångsrikt måste du ansluta till den här behållaren för att använda den. Docker attach-kommandot är här för detta ändamål. Nästa kommando visar hur du ansluter till behållaren du skapade tidigare.
$ docker attach CONTAINER_ID
Detta kommer att resultera i en förändring i din prompt. Och du är nu inne i en Ubuntu Xenial-baserad behållare. Det du gör i den här behållaren kommer att förbli inuti den. Du kan verifiera behållaren genom att köra cat /etc/issue.
5. Avsluta behållaren
Du kan enkelt avsluta en aktiv container med kommandot docker stop. Det är ett av de mest användbara docker-kommandona för nybörjare eftersom det tillåter en enkel utgång från en löpande container. Nästa kommando visar hur detta fungerar.
$ docker stop CONTAINER_ID
Du måste köra detta från en annan terminal eftersom den tidigare terminalen körde behållaren och inte har docker inuti den. En annan enkel lösning är att helt enkelt avsluta behållaren med Ctrl + D eller skriva exit inuti behållaren.
6. Ta bort en behållare
Eftersom behållare är som små bitar av virtuella maskiner kan du enkelt ta bort dem utan att ta konsekvenserna av värddatorn. Använd följande kommando för att ta bort behållaren du skapade tidigare.
$ docker rm CONTAINER_ID
Det kommer att radera behållaren direkt. Men alla dina filer och konfigurationer i den här behållaren kommer också att raderas. Så se till att flytta dem någon annanstans om du behöver dem inom en snar framtid.
7. Döda en container
Docker tillåter också användare att döda en löpande container. Skillnaden mellan att stoppa en container och döda en är ganska subtil, åtminstone i Docker. När du använder docker stop, avslutar det först processerna som körs inuti behållaren och avslutar sedan behållaren.
$ docker kill CONTAINER_ID
Docker kill-kommandot dödar dock hela containerprocessen som körs i värddatorn. Detta kan leda till oönskad felkonfiguration eller korrumpera behållarprocesserna. Så var försiktig när du använder sådana docker-kommandon för Ubuntu.
8. Ta loss från containrar
Anta att du har startat och fäst dig vid en container. Nu vill du lämna den här behållaren igång men vill använda din terminalsession. Eftersom docker-kommandona stoppa och döda avsluta behållaren, kan du inte använda dem för ditt ändamål.
Ctrl+P Ctrl+Q
Om du håller ner tangentkombinationen ovan inuti en löpande behållare kommer du att lossna från den behållaren. Jag håller till exempel helt enkelt in Ctrl och tryck P och F en efter en.
9. Kopiera innehåll mellan behållare och filsystemet
Ofta kanske du vill kopiera konfigurationsfilerna för din nuvarande produkt från behållaren och till filsystemet eller till och med några andra behållare. Docker cp-kommandot låter dig göra detta. Det fungerar som Unix cp -a-kommandot och kopierar innehåll rekursivt.
$ docker cp CONTAINER_ID:/test_file test_file
Detta kommando kommer att kopiera test_fil från behållaren med CONTAINER_ID till värddatorn. Nästa visar oss hur man kopierar ett dokument från värden till en behållare.
$ docker cp test_file CONTAINER_ID:/test_file
10. Köra kommandon inuti behållare
Även om du kan köra kommandon direkt från en pågående behållare, kanske du inte vill bifoga behållare hela tiden, särskilt om du har hundratals behållare. Eftersom detta är ett vanligt scenario ger docker-runtime ett robust kommando för att köra containerspecifika kommandon från administratörens terminalinstans.
$ docker exec CONTAINER_ID command
Detta gör att du kan köra kommandot inuti CONTAINER_ID behållare.
11. Lista alla Docker-bilder
Docker-bilder är byggstenarna i containrar. Som du bör komma ihåg skapas behållare med en bild som bas. Det är normalt för utvecklare att ha flera dockningsbilder över sina system. Nästa kommando visar oss hur du listar alla bilder på din maskin.
$ docker images
Genom att helt enkelt anropa det här kommandot visas alla docker-bilder på toppnivå tillsammans med deras storlek, taggar och arkiv. De -q alternativet kan endast användas för att hämta IMAGE_ID.
12. Ta bort Docker-bilder
Ibland kanske du vill ta bort en eller flera dockningsbilder som inte längre behövs. Nästa kommando visar hur du gör detta.
$ docker rmi <IMAGE_ID>
Men om bilden är taggad av flera repos, måste du ta bort den på följande sätt.
$ docker rmi REPOSITORY:TAG
Du kan hitta denna information när du kör kommandot docker-avbildningar.
Produktiva dockningskommandon för mellanliggande utvecklare
Om du redan har förstått konceptet med dockare och containrar, kanske du vill titta på några avancerade funktioner. Vi diskuterar olika användbara docker-kommandon avsedda att öka utvecklarnas produktivitet i följande avsnitt.
13. Lägga till beständiga volymer för behållare
Så när vi tar bort en behållare försvinner all data som är associerad med den. Docker tillåter utvecklare att skapa “” som ger beständig lagring för dessa data. Volymer är helt enkelt en mekanism som binder din behållare till ett fördefinierat utrymme på ditt filsystem.
$ docker create -it -v $(pwd):/var/www ubuntu:xenial bash
Om du kör kommandot ovan kommer din nuvarande arbetskatalog att bindas till /var/www platsen för din container. Nu kan du ändra filer i din nuvarande katalog, och ändringarna kommer att återspeglas i docker.
14. Skapa och köra containrar med Docker Run
Hittills har vi först skapat våra hamnarcontainrar och sedan startat det. Docker tillåter oss dock att göra båda dessa med bara ett enda kommando. Kolla in exemplet nedan för att se hur detta fungerar.
$ docker run -it -d ubuntu:xenial bash
Resurslänk: Hur man installerar och använder Docker i ditt Linux-system
När du kör det här kommandot hämtar det Xenial-bilden, skapar behållaren och startar den med bash. Du kommer dock inte att se effekten direkt i din terminal.
Detta beror på att vi har instruerat hamnarbetaren att köra den här behållaren i bakgrunden med hjälp av -d flagga. Om du eliminerar detta kommer du till behållaren så snart den har skapats.
15. Skapa en namngiven behållare
De -namn alternativet kan användas för att skapa behållare som bär specifika namn. Du kan använda dem som ersättning för CONTAINER_ID för de flesta dockningskommandon. Nästa kommando visar detta i aktion.
$ docker create --name TEST nginx
Detta kommando kommer att dra Nginx-bilden från Docker Hub och skapa behållaren som kallas TESTA i detta fall. Du kan nu starta den och bifoga din session för att använda behållaren. Det fungerar på samma sätt med kommandot docker run.
16. Exponera portar för containrar
Du kan kommunicera med dina behållare direkt från värden utan att använda docker-runtime alls. Detta fungerar genom att använda något slags nätverksschema definierat av administratören. Att exponera vissa portar för containern är en sådan bred teknik.
$ docker run --name NEW nginx -p 8080:80
Kommandot ovan skapar en behållare med namnet NY och binder dess port 80 till hamnen 8080 av värdsystemet. Så du kommer nu att kunna skicka förfrågningar/svar till din behållare med den här porten.
17. Leta efter ändringar i en container
Ofta kan minsta felkonfiguration leda till oönskade problem och ta timmar att felsöka. Docker diff-kommandot är praktiskt i många sådana fall. Du kan använda den för att inspektera alla ändringar i filsystemet för din behållare.
$ docker diff CONTAINER_ID
Så om du med säkerhet vet att en viss behållare är helt frisk, kan du använda det här kommandot då och då för att se ändringarna i denna behållares filsystem.
18. Skapa en ny bild från modifierade behållare
Docker tillåter utvecklare att skapa en helt ny bild baserat på ändringarna av en redan befintlig behållare. Detta kommer att vara praktiskt när du vill skapa flera behållare för olika faser av din applikation.
$ docker commit CONTAINER_ID REPOSITORY:TAG
Kommandot ovan skapar en ny bild med hjälp av CONTAINER_ID behållare.
19. Övervakningsserver för Docker-containrar
Kommandot docker event låter utvecklare övervaka servrar för realtidsinformation om behållare, bilder, plugins etc. Du kan prova detta i ditt system med hjälp av två kommandoradsskal.
$ docker events
Ange kommandot ovan i det första skalet. Skapa nu en dockercontainer i ett annat skal. Kör några docker-kommandon inuti den behållaren, så får du realtidsmeddelanden i den första terminalen.
20. Inspektera bildhistorik
Som diskuterats tidigare är bilderna byggstenarna för hamnarcontainrar. Så du kan enkelt visa bildhistorik för att upptäcka plötsliga problem i en behållare. Det är enkelt att använda det här kommandot.
$ docker history IMAGE_ID
Få helt enkelt bild-id:t för behållaren med docker ps och använd det som visas ovan. Det kommer att visa hur den aktuella bilden skapas.
21. Laddar Docker-bilder från Tars
En annan stor egenskap hos docker är möjligheten att ladda bilder från tar. Det tillåter också användare att ladda bilder från standardingången. Syntaxen för load-kommandot visas nedan.
$ docker load < IMAGE.tar.gz
Du kan också använda följande kommando.
$ docker load --input IMAGE.tar
Lista nu dina docker-bilder för att verifiera effekterna av dessa kommandon.
Resurslänk: 50 Frequently Asked Docker-intervjufrågor och svar
22. Visa systemomfattande information om Docker
Genom att se den systemomfattande informationen om dockerns körtid kan du övervaka dina containrar. Dessutom ger den viktig information som kan vara till hjälp för felsökare på grund av dess avslöjande karaktär. Använd kommandot nedan för att visa detta i ditt värdsystem.
$ docker info
Även om det verkar enkelt, kommer detta kommando att tillhandahålla en mängd information om både värddatorn och dockningsbehållare.
23. Byta namn på Docker-containrar
Ett av de mest användbara dockningskommandona för att starta utvecklare är kommandot docker rename. Det är ett enkelt kommando som bara byter namn på behållaren men som har stor betydelse för nybörjare.
$ docker rename CONTAINER NEW_NAME
Du kan använda antingen CONTAINER_ID eller parametern Namn för att representera din behållare. De NEW_NAME fältet är för det nya behållarnamnet. Du kan få både namn och id för en container med kommandot docker ps -a.
24. Starta om Docker Containers
Du kommer ofta att behöva ta itu med behållare som antingen är hängda eller har nya problem. En av många anledningar till detta kan vara extra resursförbrukning. Att starta om behållare bör vara det första du bör göra i sådana fall, som med datorer.
$ docker restart CONTAINER[S]
Som standard kommer kommandot ovan att starta om din behållare efter 10 sekunder. Du kan dock ange detta värde genom att använda -t flagga. Värden måste vara i heltal.
Docker-kommandon för nätverk
Det är viktigt att ha problemfri kommunikation mellan dina containrar. Tack och lov kommer Docker-nätverkskommandon att göra det enkelt för dig. Vi har bara diskuterat de grundläggande nätverkskommandona i följande avsnitt.
25. Lista alla nätverk
Nätverksverktyget är ett av de bästa verktygen i docker cli. Du kan använda den för att lista alla nätverk som är tillgängliga för din docker-demon på följande sätt.
$ docker network ls
Det kommer att skriva ut alla nätverk som dina behållare kan ansluta.
26. Anslut till nätverk
Du kan snabbt ansluta en eller flera körande dockningsbehållare till ett nätverk med flera värdar. Nästa kommando visar detta.
$ docker network connect NET CONTAINER_ID
NET representerar nätverket du vill ansluta till, och CONTAINER_ID representerar behållaren. Du kan också använda containernamnet istället för det.
27. Koppla från nätverk
Att koppla bort dina nätverk från ett nätverk är också lika enkelt som att ansluta dem. Kolla in exemplet nedan för att ta reda på hur detta fungerar.
$ docker network disconnect NET CONTAINER_ID
När det har körts kommer detta kommando att koppla bort behållaren från NETTO nätverk. Du kan också lägga till -f flagga för att tvinga bort den.
28. Skapa nätverk
Du kan också använda kommandot Docker Network för att skapa personliga nätverk mellan dina containrar. Detta används regelbundet i produktionen. Nästa kommando visar hur man skapar containernätverk.
$ docker network create NET
Det här kommandot kan ta flera ytterligare alternativ för att tillhandahålla förbättrade funktioner, som att ange nätverksparametrar. Du kan hitta mer om dem här.
29. Visa detaljerad information om nätverk
Docker-nätverkskommandot låter utvecklare övervaka sin nätverksinformation i mycket detalj. Det gör felsökning mycket enklare och konfiguration nästan enkel. Nästa kommando visar ett enkelt exempel på detta.
$ docker network inspect NET
Detta kommando kommer att tillhandahålla all slags information tillgänglig för nätverket NETTO. Du kan använda -v flagga för att göra utgången mer läsbar för människor. Dessutom kan du använda -f för att formatera utdata baserat på en mall.
30. Ta bort nätverk
Docker network rm-kommandot kan användas för att ta bort ett eller flera containernätverk mycket snabbt. Kommandot nedan visar detta för dig.
$ docker network rm NET
Du kan också ta bort istället för rm för detta kommando eftersom de är alias.
31. Ta bort alla oanvända nätverk
Docker tillåter administratörer att ta bort alla oanvända nätverk. Det kallas beskärning i hamnarbetaretermer. Kommandot nedan visar hur detta fungerar.
$ docker network prune
Det är ett interaktivt kommando och kommer att be om bekräftelse för varje borttagning. Du kan lägga till -f flagga för att stänga av detta. Detta kommando är säkert eftersom det inte beror på användaren.
Diverse Docker-kommandon
Det finns massor av ytterligare kommandon tillgängliga för docker-demonen. Men vi kan inte bara diskutera dem alla i en sådan enda guide. Så bli inte orolig om du inte hittar några specifika kommandon i vår lista. Här är några ytterligare docker-kommandon för Ubuntu-liknande system.
32. Bygg bilder från Dockerfile
Dockerfilen är det primära byggkonfigurationsverktyget för Docker-behållare. Du kan lär dig hur du skapar dem här. Det här exemplet visar hur du kan bygga en containerbild från en Dockerfil.
$ docker build . -t APP:v1
Detta kommando kommer att skapa bilden med hjälp av Dockerfilen i den aktuella arbetskatalogen. Det kommer att sätta sig APP som reponamn och v1 som taggen. Du måste ange sökvägen om Dockerfilen finns i någon annan katalog.
33. Ta bort alla oanvända resurser
Eftersom värdsystem vanligtvis rymmer hundratals behållare finns det ofta dinglande resurser. Det kan vara improduktivt och kan påverka serverns arbetsbelastning. Du kan använda följande kommando för att ta bort alla sådana resurser.
$ docker system prune
Det kommer att radera alla oanvända behållare, volymer och nätverk. Dessutom kan du lägga till -a flagga för att ta bort alla oanvända behållare och bilder från docker-runtime.
34. Ta bort specifika volymer
Du kan enkelt ta bort specifika volymer som dina containrar inte längre behöver. Det är vanligt under produktionen. Nästa exempel visar att kommandot docker volym kan användas för detta ändamål.
$ docker volume rm VOLUME_NAME
Det kommer att resultera i att den angivna volymen raderas. Du kan passera -f alternativet för att hoppa över bekräftelserna.
35. Söka efter bilder i Docker Hub
Docker cli tillåter också utvecklare att söka efter specificerade bilder i Docker-hubben direkt från terminalen. Du kan använda docker-sökkommandot för detta ändamål.
$ docker search nginx
När den körs kommer den att leta efter den officiella Nginx-bilden i det officiella förvaret. Du kan lägga till flera filter för att begränsa eller specificera din sökning.
36. Ta bort behållare vid utgång
Du kan skapa behållare som kommer att tas bort när ditt jobb är klart och du avslutar det. Det kan vara användbart i ett antal situationer, till exempel för felsökning. Nästa kommando visar detta i aktion.
$ docker run --rm --it xenial /bin/bash
Detta kommando skapar och startar en Xenial-baserad behållare med bash som körs inuti. Du kan göra din personal här, och så fort du avslutar containern kommer docker-motorn att ta bort denna container automatiskt.
37. Få nätverksloggar hos värd
Att ha loggarna för dina containernätverk till hands är extremt användbart. Du kan använda följande kommando för att hämta behållarloggar på värddatorn.
$ journalctl -u docker.service
Du kan hitta de flesta av dina felsökningslösningar genom att inspektera resultatet av detta kommando.
38. Exportera containerfilsystem som Tars
Docker-cli tillhandahåller exportkommandot som kan användas för att exportera en containers filsystem som ett tar-arkiv. Kolla in kommandot nedan för att förstå hur detta fungerar.
$ docker export giant_panda > new.tar
Detta kommando motsvarar nästa kommando.
$ docker export --output="new.tar" giant_panda
39. Visa versionsinformation
Du kan enkelt se versionsinformationen för din docker-klient och servermotsvarigheter i kommandona nedan.
$ docker version
Med nästa kan du också hämta docker-demonversionen tillsammans med bygginformationen.
$ docker -v
40. Visa hjälpinformation
Docker-dokumentationen är helt enkelt inspirerande. Du kan få hjälp med den övergripande demonen helt enkelt genom att använda kommandodockan.
$ docker
För att få ytterligare data om underordnade kommandon, använd följande syntax.
$ docker command[S] --help $ docker network --help
Så du kan enkelt utöka djupet på cli-dokumentationen.
Avslutande tankar
Docker-kommandon är viktiga för moderna systemunderhållare och utvecklare. Det är svårt att exakt förklara dockers inverkan på moderna applikationsinstallationer. Nästan alla vanliga företag har anpassat docker.
Så högbetalda jobbmöjligheter finns också tillgängliga för CS-studenter över hela världen. Så att lära sig några av dessa kommandon kommer att vara en stor investering för framtida ingenjörer.
Förhoppningsvis kunde vi ge dig den kunskap du sökte. Kommentera dina tankar och låt oss veta om du har fler frågor om Docker.