Installer Docker og Learn Basic Container Manipulation i CentOS og RHEL 8/7 - Del 1


I denne 4-artikels serie vil vi diskutere Docker, som er et open source letvægts virtualiseringsværktøj, der kører øverst på operativsystemniveau, så brugerne kan oprette, køre og distribuere applikationer, indkapslet i små containere.

Denne type Linux-containere har vist sig at være hurtige, bærbare og sikre. Processerne, der kører i en Docker-container, er altid isoleret fra hovedværten, hvilket forhindrer manipulation udefra.

Denne vejledning giver et udgangspunkt for, hvordan du installerer Docker, opretter og kører Docker-containere på CentOS/RHEL 8/7, men ridser næppe overfladen på Docker.

Trin 1: Installer og konfigurer Docker

1. Tidligere versioner af Docker blev kaldt docker eller docker-engine. Hvis du har disse installeret, skal du afinstallere dem, før du installerer en nyere docker-ce-version.

# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2. For at installere den nyeste version af Docker Engine skal du konfigurere Docker-lageret og installere yum-utils-pakken for at aktivere Docker-stabilt lager på systemet.

# yum install -y yum-utils
# yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3. Installer nu den nyere docker-ce-version fra Docker-arkivet og containerd manuelt, fordi på grund af nogle problemer blokerede Red Hat installationen af containerd.io> 1.2.0-3.el7 , som er en afhængighed af docker-ce.

# yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
# yum install docker-ce docker-ce-cli

4. Efter at Docker-pakken er installeret, skal du starte dæmonen, kontrollere dens status og aktivere den hele systemet ved hjælp af nedenstående kommandoer:

# systemctl start docker 
# systemctl status docker
# systemctl enable docker

5. Kør endelig et container-testbillede for at kontrollere, om Docker fungerer korrekt ved at udstede følgende kommando:

# docker run hello-world

Hvis du kan se nedenstående meddelelse, er alt på det rigtige sted.

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

6. Nu kan du køre et par grundlæggende Docker-kommandoer for at få nogle oplysninger om Docker:

# docker info
# docker version

7. For at få en liste over alle tilgængelige Docker-kommandoer, skriv docker på din konsol.

# docker

Trin 2: Download et Docker-billede

8. For at starte og køre en Docker-container skal der først downloades et billede fra Docker Hub på din vært. Docker Hub tilbyder mange gratis billeder fra dets arkiver.

For at søge efter et Docker-billede udsteder f.eks. Ubuntu følgende kommando:

# docker search ubuntu

9. Når du har besluttet, hvilket billede du vil køre ud fra dine behov, skal du downloade det lokalt ved at køre nedenstående kommando (i dette tilfælde downloades og bruges et Ubuntu-billede):

# docker pull ubuntu

10. For at liste alle de tilgængelige Docker-billeder på dit værtsudgave skal du bruge følgende kommando:

# docker images

11. Hvis du ikke længere har brug for et Docker-billede, og du vil fjerne det fra værtsproblemet, skal du bruge følgende kommando:

# docker rmi ubuntu

Trin 3: Kør en Docker Container

Når du udfører en kommando mod et billede, får du dybest set en container. Når kommandoen, der udføres i containeren, slutter, stopper containeren (du får en container, der ikke kører eller er afsluttet). Hvis du kører en anden kommando ind i det samme billede, oprettes der en ny container osv.

Alle de oprettede containere forbliver på værtsfilsystemet, indtil du vælger at slette dem ved hjælp af kommandoen docker rm .

12. For at oprette og køre en container skal du køre kommando til et downloadet billede, i dette tilfælde Ubuntu, så en grundlæggende kommando ville være at vise distributionsversionens fil inde i containeren ved hjælp af cat-kommandoen, som i det følgende eksempel:

# docker run ubuntu cat /etc/issue

Ovenstående kommando er opdelt som følger:

# docker run [local image] [command to run into container]

13. For at køre en af containerne igen med kommandoen, der blev udført for at oprette den, skal du først hente container-id'et (eller navnet automatisk genereret af Docker) ved at udstede nedenstående kommando, der viser en liste over kørende og stoppede (ikke-kørende) containere:

# docker ps -l 

14. Når container-ID'et er opnået, kan du starte containeren igen med den kommando, der blev brugt til at oprette den, ved at udstede følgende kommando:

# docker start 923a720da57f

Her repræsenterer strengen 923a720da57f container-ID'et.

15. Hvis containeren kører, kan du få dens ID ved at udstede docker ps kommando. For at stoppe den kørende containerproblem docker stop kommando ved at angive container-id eller automatisk genereret navn.

# docker stop 923a720da57f
OR
# docker stop cool_lalande
# docker ps

16. Et mere elegant alternativ, så du ikke behøver at huske container-id'et, ville være at tildele et unikt navn til hver container, du opretter ved hjælp af indstillingen --name på kommandolinjen, som i følgende eksempel:

# docker run --name ubuntu20.04 ubuntu cat /etc/issue

17. Derefter kan du ved hjælp af det navn, du har tildelt containeren, manipulere containeren (start, stop, fjern, top, statistik) ved blot at adressere dens navn, som i eksemplerne nedenfor:

# docker start ubuntu20.04
# docker stats ubuntu20.04
# docker top ubuntu20.04 

Vær opmærksom på, at nogle af ovenstående kommandoer muligvis ikke viser noget output, hvis den kommandoproces, der blev brugt til at oprette containeren, er færdig. Når processen, der kører inde i containeren, er færdig, stopper containeren.

Trin 4: Kør en interaktiv session i en container

18. For at interagere med at oprette forbindelse til en container shell-session og køre kommandoer, som du gør på enhver anden Linux-session, skal du udstede følgende kommando:

# docker run -it ubuntu bash

Ovenstående kommando er opdelt som følger:

  1. -i bruges til at starte en interaktiv session.
  2. -t tildeler en TTY og vedhæfter stdin og stdout.
  3. ubuntu er det billede, som vi brugte til at oprette containeren.
  4. bash (eller/bin/bash) er den kommando, vi kører inde i Ubuntu-containeren.

19. For at afslutte og vende tilbage til vært fra den kørende containersession skal du skrive kommandoen exit . Afslutkommandoen afslutter alle containerprocesser og stopper den.

# exit

20. Hvis du er interaktivt logget på containerterminalprompt, og du skal holde containeren i kørende tilstand, men afslutte den interaktive session, kan du afslutte konsollen og vende tilbage til værtsterminalen ved at trykke på Ctrl + p og Ctrl + q taster.

21. For at genoprette forbindelse til den kørende container skal du have container-id eller navn. Udsted docker ps kommando for at hente ID eller navn, og kør derefter docker attach kommando ved at specificere container ID eller navn som illustreret i billedet ovenfor:

# docker attach <container id>

22. Udgiv følgende kommando for at stoppe en kørende container fra værtssessionen:

# docker kill <container id>

Det er alt til grundlæggende containermanipulation. I den næste vejledning diskuterer vi, hvordan du gemmer, sletter og kører en webserver i en Docker-container.