Docker (podman)
Comanda docker din Linux este folosită pentru a interacționa cu motorul Docker, care permite crearea, gestionarea și executarea containerelor de aplicații. Cu ajutorul comenzilor docker, utilizatorii pot crea, porni, opri și gestiona containere, precum și să gestioneze imaginile Docker utilizate pentru a crea aceste containere.
Mai precis, docker este folosit pentru:
- Descărcarea imaginilor de aplicații și/sau sisteme de operare predefinite;
- Crearea de noi imagini prin construirea lor pe baza altor imagini existente și modificându-le;
- Pornirea, oprirea și repornirea de containere, pentru a rula aplicații sau servicii într-un mediu izolat și controlat;
- Verificarea stării containerele și imaginilor existente, precum și gestionarea acestora prin eliminarea sau modificarea lor.
În general, docker este utilizat pentru a rula aplicații sau servicii într-un mediu izolat și controlat, fără a afecta restul sistemului de operare. Acest lucru face posibilă dezvoltarea și testarea aplicațiilor într-un mod mai rapid și mai sigur, iar utilizatorii pot rula multiple versiuni ale acelorași aplicații fără a fi nevoie să facă schimbări la nivel de sistem.
podman este un utilitar de management de containere pentru Linux care poate fi utilizat pentru a crea, rula și gestiona containere fără a fi necesar să ai nevoie de un daemon (serviciu) pentru a gestiona containerele. Este o alternativă la docker și este inclus în majoritatea distribuțiilor Linux.
Utilizarea podman poate fi similară cu cea a docker, dar există câteva diferențe cheie. În podman, fiecare container rulează ca proces individual, fără a fi necesar un daemon dedicat pentru a gestiona containerele. În plus, podman poate fi utilizat fără a fi necesar să ai privilegii de super-utilizator (root).
Iată câteva exemple de utilizare a podman:
- Pentru a căuta un container în registrele de containere:
podman search <nume_container>
- Pentru a rula un container:
podman run <nume_container>
- Pentru a afișa informații despre containere:
podman ps
- Pentru a crea un container dintr-un fișier de imagine:
podman build -t <nume_container> .
- Pentru a salva un container ca imagine:
podman commit <nume_container> <nume_imagine>
- Pentru a opri un container:
podman stop <nume_container>
Acestea sunt doar câteva exemple de utilizare a podman. Utilitarul are o multitudine de opțiuni și comenzi pentru a gestiona containere în Linux, iar documentația oficială poate fi consultată pentru mai multe informații.
Ce este Vim?
vim este un editor de text foarte puternic și popular în sistemele de operare Linux. Iată câțiva pași pentru a deschide și edita un fișier cu vim:
- Deschide terminalul și navighează la directorul unde se află fișierul pe care dorești să-l editezi folosind comanda
cd. - Introdu comanda
vim numele_fisierului, undenumele_fisieruluieste numele fișierului pe care dorești să-l editezi. Dacă fișierul nu există, va fi creat automat când salvezi modificările. - După ce fișierul este deschis în
vim, poți începe să editezi textul. Poți utiliza tastele direcționale pentru a te deplasa prin text și tastele de editare pentru a adăuga, șterge sau înlocui caractere. Învim, există două moduri principale de lucru:- Modul de comenzi (
Command Mode): Acesta este modul implicit în carevimîncepe atunci când deschizi un fișier. În acest mod, tastele pe care le apeși sunt interpretate ca și comenzivim, precum mutarea cursorului, copierea și ștergerea textului, salvarea fișierului sau părăsirea programului. Pentru a intra în modul de inserare, trebuie să apeși tastai,a,o, sau orice alta comanda de inserare, cum ar fiI,A,O,s, etc. - Modul de inserare (
Insert Mode): Acest mod este folosit pentru a introduce text în fișier. În modul de inserare, tastele pe care le apeși sunt interpretate ca și caracterele textului pe care dorești să-l inserezi în fișier. Pentru a ieși din modul de inserare și a reveni la modul de comenzi, trebuie să apeși tastaEsc. - Pentru a schimba între modul de inserare și modul de comenzi în
vim, urmează acești pași: - Pentru a intra în modul de inserare, apasă tasta
isaua(sau orice altă comandă de inserare pe care o cunoști). Acest lucru va plasa cursorul în poziția în care începe inserarea de text. - Pentru a ieși din modul de inserare și a reveni la modul de comenzi, apasă tasta
Esc. Acest lucru va plasa cursorul în ultima poziție în care te-ai aflat în modul de comenzi. - Pentru a reveni rapid la modul de inserare de la modul de comenzi, poți folosi următoarele comenzi:
i- începe inserarea la poziția cursoruluia- începe inserarea după poziția cursoruluiI- începe inserarea la începutul linieiA- începe inserarea la sfârșitul linieio- începe inserarea pe o nouă linie sub poziția cursoruluiO- începe inserarea pe o nouă linie deasupra poziției cursorului.
- Reține că
vimare o mulțime de comenzi și comenzi-cheie, iar acestea pot varia în funcție de modul în care te afli. Este important să îți dedici timpul pentru a învăța comenzi-cheie de bază și pentru a exersa trecerea între modul de inserare și modul de comenzi.
- Pentru a salva modificările, apasă tasta
Escpentru a ieși din modul de editare și apoi tastează comanda:wurmată de tasta Enter. - Pentru a ieși din
vimși să revii la terminal, tastează comanda:qurmată de tastaEnter. Dacă ai modificat fișierul și dorești să ieși fără a salva, folosește comanda:q!urmată de tastaEnter. - Dacă ai modificat fișierul și dorești să salvezi modificările și să ieși din
vimîn același timp, tastează comanda:wq(sau) urmată de tasta
Enter.
Acești pași simpli te vor ajuta să începi să editezi fișiere cu vim pe sistemele de operare Linux. Este important să reții că vim are o curba de învățare abruptă, dar odată ce ai învățat comenzi-cheie de bază, poți începe să folosești vim pentru a edita fișiere cu mai multă eficiență.
Cum setez podman?
Pentru a avea acces la depozitele cu imagini predefinite pentru podman, va trebui să editezi fișierul /etc/containers/registries.conf si sa modifici linia care conține unqualified-search-registries asa cum se vede mai jos:
sudo vim /etc/containers/registries.conf # For more information on this configuration file, see containers-registries.conf(5). # # NOTE: RISK OF USING UNQUALIFIED IMAGE NAMES # We recommend always using fully qualified image names including the registry # server (full dns name), namespace, image name, and tag # (e.g., registry.redhat.io/ubi8/ubi:latest). Pulling by digest (i.e., # quay.io/repository/name@digest) further eliminates the ambiguity of tags. # When using short names, there is always an inherent risk that the image being # pulled could be spoofed. For example, a user wants to pull an image named # `foobar` from a registry and expects it to come from myregistry.com. If # myregistry.com is not first in the search list, an attacker could place a # different `foobar` image at a registry earlier in the search list. The user # would accidentally pull and run the attacker's image and code rather than the # intended content. We recommend only adding registries which are completely # trusted (i.e., registries which don't allow unknown or anonymous users to # create accounts with arbitrary names). This will prevent an image from being # spoofed, squatted or otherwise made insecure. If it is necessary to use one # of these registries, it should be added at the end of the list. # # # An array of host[:port] registries to try when pulling an unqualified image, in order. unqualified-search-registries = ["docker.io", "quay.io"]
Cum creez un container?
Un fișier Dockerfile este un fișier text care conține instrucțiunile necesare pentru a construi o imagine docker. Folosind un Dockerfile, poți defini imaginea pe care vrei să o creezi, împreună cu toate dependințele și configurările necesare. podman suportă construirea de imagini folosind fișiere Dockerfile, așa că vom folosi acest lucru în exemplul următor.
Iată pașii pentru a crea un container simplu folosind podman și un dockerfile:
1. Creează un fișier Dockerfile. Acesta trebuie să fie numit Dockerfile și să fie salvat într-un director dedicat pentru proiectul tău. În acest exemplu, vom crea un fișier Dockerfile care va porni un container Nginx cu pagina de pornire implicită.
# folosește imaginea Nginx ca imagine de bază FROM nginx:latest # setează variabila de mediu pentru portul 80 ENV PORT 80 # expune portul 80 EXPOSE ${PORT} # pornește serverul Nginx la pornirea containerului CMD ["nginx" "-g" "daemon off;"]
2. Construiește imaginea folosind fișierul Dockerfile. Folosind comanda podman build, poți construi imaginea folosind fișierul Dockerfile. În exemplul de mai jos, vom construi imaginea și o vom numi my-nginx.
podman build -t my-nginx .
3. Verifică că imaginea a fost creată cu succes. Poți verifica lista de imagini disponibile folosind comanda podman images.
podman images REPOSITORY TAG IMAGE ID CREATED SIZE localhost/my-nginx latest 5778038bf41a 17 seconds ago 139 MB docker.io/library/nginx latest 114aa6a9f203 2 weeks ago 139 MB
4. Rulează containerul folosind imaginea creată. Folosind comanda podman run, poți rula containerul folosind imaginea creată. În exemplul de mai jos, vom rula containerul și îl vom numi my-container.
podman run -d --rm -p 8080:80 --name my-container my-nginx
Unde:
podman run: comandă pentru a crea și rula un container-d: opțiunea pentru a rula containerul în mod detasat (în fundal)–rm: opțiunea pentru a șterge containerul după ce se oprește procesul-p 8080:80: opțiunea pentru a face portul 8080 de pe sistemul gazdă disponibil containerului la portul 80 al containerului (8080:80)–name my-container: opțiunea pentru a da un nume containerului creat (in acest caz “my-container”)my-nginx: numele imaginii de container de pornit (in cazul de fata este Nginx, dar poate fi orice alta imagine disponibila in Podman).
Practic, aceasta comandă va rula un container Nginx în mod detasat (în fundal), va face portul 8080 disponibil pe sistemul gazdă și va atribui numele my-container containerului creat. Când procesul este terminat, containerul va fi șters automat din sistem.
5. Verifică că containerul rulează cu succes. Poți verifica containerul care rulează folosind comanda podman ps.
podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 97c3c8bb8f55 localhost/my-nginx:latest nginx -g daemon o... 6 seconds ago Up 6 seconds ago 0.0.0.0:8080->80/tcp my-container
Acum poți accesa pagina de pornire Nginx la adresa http://{nume}.intranet:8080.