Bogdan's Docs

Table of Contents

Table of Contents

  • Docker (podman)
    • Ce este Vim?
    • Cum setez podman?
    • Cum creez un container?

Ideas

  • Artificial Intelligence
    • Bond Pricing
    • Kubernetes Inference
    • Knowledge Bot
    • Ready to Use Models
    • Satellite Damage Detection

Curs IoT si AI (ro) Resources

  • Links
    • Artificial Intelligence
  • Recipes
    • MacOS
Bogdan's Docs
Docs » iot-si-ai:docker-podman

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, unde numele_fisierului este 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. În vim, există două moduri principale de lucru:
    • Modul de comenzi (Command Mode): Acesta este modul implicit în care vim începe atunci când deschizi un fișier. În acest mod, tastele pe care le apeși sunt interpretate ca și comenzi vim, 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 tasta i, a, o, sau orice alta comanda de inserare, cum ar fi I, 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 tasta Esc.
    • 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 i sau a (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 cursorului
      • a - începe inserarea după poziția cursorului
      • I - începe inserarea la începutul liniei
      • A - începe inserarea la sfârșitul liniei
      • o - începe inserarea pe o nouă linie sub poziția cursorului
      • O - începe inserarea pe o nouă linie deasupra poziției cursorului.
    • Reține că vim are 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 Esc pentru a ieși din modul de editare și apoi tastează comanda :w urmată de tasta Enter.
  • Pentru a ieși din vim și să revii la terminal, tastează comanda :q urmată de tasta Enter. Dacă ai modificat fișierul și dorești să ieși fără a salva, folosește comanda :q! urmată de tasta Enter.
  • 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.

Previous Next