Vanliga Dockerkommandon

Vi ska prova att starta en container som laddades ned från Docker Hub. Vad Docker Hub är tar vi lite senare i guiden. Hur kan vi se vilka containrar som är startade? Vilka images har vi? Docker sparar all information på olika platser beroende på operativsystem.

  • Linux: /var/lib/docker/
  • Mac: ~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw
  • Windows: C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\MobyLinuxVM.vhdx

Vi ska inte gå in i mapparna/filerna och pilla utan vi använder Dockers CLI och hanterar det därifrån.

#Några bra-att-ha-kommandon

Kommando Vad gör det?
docker –help Hjälp om docker
docker images Listar alla nedladdade images
docker search <image> Söker efter en image på Docker Hub
docker ps Listar alla containrar
docker rm <id> Tar bort en eller flera container
docker rmi <id> Tar bort en eller flera images
docker start <id> Startar en eller flera containrar
docker stop <id> Stoppar en eller flera containrar
docker pull <image> laddar ner en image utan att köra den
docker run <image> Starta en container från en image

Istället för ett id kan vi använda namnet på containern. Om vi inte har satt det själva autogenereras ett namn. Hur kan man se den informationen då? Först behöver vi en startad container! Ubuntu har ett eget repository där de huserar ett antal images vi kan använda. Det finns images i olika storlekar och en grundregel är att utgå ifrån en nedbantad version och sedan fylla på själv med det man vill ha och behöver. När vi kör kommandot run <username/imagename> letar docker först lokalt och om det inte återfinns där letas det på Docker Hub där den laddas ner om den hittas.

$ docker run --rm -it ubuntu:22.04

Flaggan -it gör att vi får ett interaktivt shell att jobba med. (Se docker run --help).
Flaggan --rm rensar automatiskt upp efter oss när vi stänger containern. Om vi vill att containern ska köras i bakgrunden, kan vi lägga till flaggan -d (detach).

Öppna sedan en ny terminal och kör $ docker ps:

$ docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS         PORTS                     NAMES
5490e0ab02da   ubuntu:22.04            "bash"                   9 seconds ago   Up 8 seconds                             nostalgic_mccarthy

Du kan behöva scrolla åt höger för att se allt. Här får vi fram id, image, givet kommando och vilka namn containrarna har. På ovan container kan man då köra tex:

$ docker stop nostalgic_mccarthy

Containern är då stoppad och nollställd.

Om vi kör $ docker images och ser:

<none>     <none>     cb3e76fda019     2 weeks ago     87.3MB

så har vi lyckats skapa images som inte är kopplade till någon taggad version (vi kommer till taggning senare). Vi kan rensa lite emellanåt med docker rmi $(docker images -f "dangling=true" -q). Det kallas Prune dangling images. Vill vi istället rensa helt kör vi $ docker system prune -a. Vi får då bygga om de images som inte har blivit pushade.

#Revision history

  • 2022-04-12: (B, lew) Uppdatering inför HT22.
  • 2019-03-14: (A, lew) Första versionen.

Document source.