Instalirajte Docker i naučite osnovnu manipulaciju kontejnerima u CentOS i RHEL 8/7 - 1. dio


U ovoj seriji od 4 članka, raspravljat ćemo o Docker-u, koji je lagani alat za virtuelizaciju otvorenog koda koji radi na vrhu nivoa operativnog sistema, omogućavajući korisnicima da kreiraju, pokreću i postavljaju aplikacije, inkapsulirane u male kontejneri.

Ova vrsta Linux kontejnera je dokazano brza, prenosiva i sigurna. Procesi koji se pokreću u Docker kontejneru su uvijek izolovani od glavnog hosta, sprečavajući vanjske manipulacije.

Ovaj vodič pruža početnu tačku o tome kako instalirati Docker, kreirati i pokrenuti Docker kontejnere na CentOS/RHEL 8/7, ali jedva zagreba površinu Dockera.

Korak 1: Instalirajte i konfigurirajte Docker

1. Ranije verzije Docker-a su se zvale docker ili docker-engine, ako ih imate instalirane, morate deinstalirajte ih prije instaliranja novije docker-ce verzije.

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

2. Da instalirate najnoviju verziju Docker Engine-a morate postaviti Docker spremište i instalirati yum-utils paket da omogućite Docker stabilno spremište na sistemu.

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

3. Sada instalirajte noviju docker-ce verziju iz Docker spremišta i containerd ručno, jer je zbog nekih problema Red Hat blokirao instalaciju od containerd.io > 1.2.0-3.el7, što je zavisnost od 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. Nakon što je Docker paket instaliran, pokrenite demon, provjerite njegov status i omogućite ga na cijelom sistemu koristeći sljedeće naredbe:

systemctl start docker 
systemctl status docker
systemctl enable docker

5. Konačno, pokrenite testnu sliku kontejnera da biste provjerili radi li Docker ispravno, izdavanjem sljedeće naredbe:

docker run hello-world

Ako vidite poruku ispod, onda je sve na pravom mjestu.

Sample Output
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. Sada možete pokrenuti nekoliko osnovnih Docker komandi da dobijete neke informacije o Dockeru:

Za informacije o Dockeru u cijelom sistemu
docker info

Za Docker verziju
docker version

7. Da biste dobili listu svih dostupnih Docker komandi, upišite docker na svoju konzolu.

docker

Korak 2: Preuzmite Docker sliku

8. Da biste pokrenuli i pokrenuli Docker kontejner, prvo morate preuzeti sliku sa Docker Hub-a na vašem hostu. Docker Hub nudi mnogo besplatnih slika iz svojih spremišta.

Za traženje Docker slike, Ubuntu, na primjer, izdajte sljedeću naredbu:

docker search ubuntu

9. Nakon što odlučite koju sliku želite pokrenuti na osnovu vaših potreba, preuzmite je lokalno pokretanjem naredbe ispod (u ovom slučaju se preuzima i koristi Ubuntu slika ):

docker pull ubuntu

10. Za popis svih dostupnih Docker slika na vašem hostu izdajte sljedeću naredbu:

docker images

11. Ako vam više nije potrebna Docker slika i želite je ukloniti sa hosta, izdajte sljedeću naredbu:

docker rmi ubuntu

Korak 3: Pokrenite Docker kontejner

Kada izvršite naredbu protiv slike, u osnovi dobijate kontejner. Nakon što se naredba koja se izvršava u kontejneru završi, kontejner se zaustavlja (dobićete kontejner koji nije pokrenut ili je izašao). Ako ponovo pokrenete drugu naredbu u istoj slici, kreira se novi kontejner i tako dalje.

Svi kreirani kontejneri će ostati na host fajl sistemu sve dok ne odlučite da ih izbrišete korišćenjem naredbe docker rm.

12. Da biste kreirali i pokrenuli kontejner, morate pokrenuti naredbu u preuzetoj slici, u ovom slučaju, Ubuntu, tako da bi osnovna komanda bila da prikažete datoteka verzije distribucije unutar kontejnera pomoću naredbe cat, kao u sljedećem primjeru:

docker run ubuntu cat /etc/issue

Gornja naredba je podijeljena na sljedeći način:

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

13. Da biste ponovo pokrenuli jedan od kontejnera sa naredbom koja je izvršena za kreiranje, prvo morate dobiti ID kontejnera (ili ime koje je Docker automatski generirao) izdavanjem naredbe ispod, koja prikazuje listu pokrenutih i zaustavljenih (nepokrenutih) kontejnera:

docker ps -l 

14. Kada se ID kontejnera dobije, možete ponovo pokrenuti kontejner sa naredbom koja je korištena za njegovo kreiranje, izdavanjem sljedeće naredbe:

docker start 923a720da57f

Ovdje string 923a720da57f predstavlja kontejner ID.

15. U slučaju da je kontejner pokrenut, možete dobiti njegov ID izdavanjem naredbe docker ps. Za zaustavljanje pokrenutog kontejnera problem docker stop naredbom tako što ćete navesti ID kontejnera ili automatski generirano ime.

docker stop 923a720da57f
OR
docker stop cool_lalande
docker ps

16. Elegantnija alternativa tako da ne morate pamtiti ID kontejnera bi bila da dodijelite jedinstveno ime za svaki spremnik koji kreirate korištenjem - -name opcija na komandnoj liniji, kao u sljedećem primjeru:

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

17. Zatim, koristeći naziv koji ste dodijelili kontejneru, možete manipulirati kontejnerom (start, stop, ukloni, top, stats) dalje samo adresiranjem njegovog imena, kao u primjerima ispod:

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

Imajte na umu da neke od gornjih naredbi možda neće prikazati izlaz ako se završi proces naredbe koja je korištena za kreiranje spremnika. Kada se proces koji se odvija unutar kontejnera završi, kontejner se zaustavlja.

Korak 4: Pokrenite interaktivnu sesiju u kontejner

18. Da biste se interaktivno povezali u sesiju ljuske kontejnera i pokrenuli komande kao što radite na bilo kojoj drugoj Linux sesiji, izdajte sljedeću naredbu:

docker run -it ubuntu bash

Gornja naredba je podijeljena na sljedeći način:

  1. -i se koristi za pokretanje interaktivne sesije.
  2. -t dodjeljuje TTY i pripaja stdin i stdout.
  3. ubuntu je slika koju smo koristili za kreiranje kontejnera.
  4. bash (ili /bin/bash) je komanda koju izvodimo unutar Ubuntu kontejnera.

19. Da biste izašli i vratili se na host iz pokrenute sesije kontejnera, morate upisati naredbu exit. Komanda exit prekida sve procese kontejnera i zaustavlja ih.

exit

20. Ako ste interaktivno prijavljeni na prompt terminala kontejnera i trebate zadržati kontejner u radnom stanju, ali izaći iz interaktivne sesije, možete prestati< konzolu i vratite se na host terminal pritiskom na tipke Ctrl+p i Ctrl+q.

21. Za ponovno povezivanje sa pokrenutim kontejnerom potreban vam je ID ili ime kontejnera. Izdajte naredbu docker ps da dobijete ID ili name, a zatim pokrenite naredbu docker attach specificirajući kontejner < jak>ID ili ime, kao što je prikazano na gornjoj slici:

docker attach <container id>

22. Da zaustavite pokrenuti kontejner iz sesije domaćina, izdajte sljedeću naredbu:

docker kill <container id>

To je sve za osnovnu manipulaciju kontejnerom. U sljedećem vodiču raspravljat ćemo o tome kako spremiti, izbrisati i pokrenuti web server u Docker kontejneru.