Nov 13, 2023

Šta je Docker?

Šta je Docker?

 Docker je platforma za razvoj, dostavu i pokretanje aplikacija u kontejnerima. Ova tehnologija omogućava programerima da pakuju aplikacije i sve njihove zavisnosti u lagan i prenosiv kontejner. Docker koristi tehnologiju kontejnerizacije na nivou operativnog sistema kako bi omogućio izolaciju resursa i konzistentno izvršavanje aplikacija nezavisno od okoline.

Glavne komponente Docker platforme uključuju:

  1. Docker Engine: Jezgro Docker platforme koje omogućava kreiranje i upravljanje kontejnerima. To uključuje Docker daemon (servis koji upravlja kontejnerima) i Docker CLI (komandna linija za interakciju sa Dockerom).

  2. Docker Image: Paket koji sadrži aplikaciju, zajedno sa svim potrebnim zavisnostima, konfiguracijama i kôdom. Docker image se koristi za kreiranje kontejnera.

  3. Docker Container: Instanca Docker image-a koja se izvršava kao izolovani proces. Kontejneri su prenosivi, dosledni i brzo se mogu pokrenuti ili zaustaviti.

Docker olakšava rad razvojnih timova tako što eliminiše probleme oko različitih okolina za razvoj, testiranje i produkciju. Programeri mogu kreirati Docker image svoje aplikacije na svom računaru i taj isti image može se koristiti u bilo kojoj Docker kompatibilnoj okolini bez brige o razlikama u konfiguraciji ili zavisnostima.

U suštini, Docker omogućava lakše upravljanje i isporuku aplikacija pomoću kontejnerizacije.

Šta je Docker Engine?

Docker Engine je centralna komponenta Docker platforme koja omogućava upravljanje i izvršavanje kontejnera. Sastoji se iz nekoliko ključnih delova:

  1. Docker Daemon: Ovo je pozadinski proces (servis) koji upravlja kontejnerima na sistemu. On prima zahteve od Docker CLI (Command Line Interface) i komunicira sa Docker Registrom (gde se čuvaju Docker image-ovi) i lokalnim Docker Storage-om (gde se čuvaju Docker image-i i podaci kontejnera). Docker Daemon je odgovoran za pokretanje, zaustavljanje, i upravljanje životnim ciklusom kontejnera.

  2. Docker CLI: Ovo je korisnički interfejs putem komandne linije koji omogućava korisnicima da komuniciraju sa Docker Daemon-om. Korisnici koriste Docker CLI da izdaju komande kao što su kreiranje, pokretanje, zaustavljanje i brisanje kontejnera, kao i upravljanje Docker image-ovima i drugim aspektima Docker platforme.

  3. Docker API: Docker Engine ima API (Application Programming Interface) koji omogućava programerima i drugim alatima da komuniciraju sa Dockerom i automatizuju različite zadatke. Docker CLI, na primer, koristi ovaj API da bi interagovao sa Docker Daemon-om.

  4. Docker Compose: Ovo je alat koji omogućava definisanje i upravljanje više kontejnera kao deo jedne aplikacije. Pomoću Docker Compose-a možete opisati konfiguraciju aplikacije, uključujući servise, mreže i volume, u jednom fajlu, a zatim pokrenuti sve ove kontejnere jednostavnom komandom.

Docker Engine omogućava kreiranje, upravljanje i izvršavanje kontejnera na operativnom sistemu. On je ključna komponenta koja čini Docker tehnologiju funkcionalnom i korisnom za razvoj, testiranje i isporuku aplikacija.


Docker Image

Docker Image je paket koji sadrži sve što je potrebno da bi se pokrenula aplikacija, uključujući kôd, runtime, sistemske alatke, biblioteke i postavke. Ovi image-ovi se koriste za kreiranje Docker kontejnera, koji su izvršne instance tih image-ova. Evo ključnih elemenata Docker image-a:

  1. Osnovni sloj (Base Layer): Svaki Docker image počinje određenim osnovnim slojem koji obično predstavlja bazni operativni sistem, kao što su Ubuntu, Alpine Linux ili neki drugi. Ovaj sloj obezbeđuje osnovno okruženje za izvršavanje aplikacije.

  2. Dodatni slojevi (Additional Layers): Nakon osnovnog sloja, image može sadržavati dodatne slojeve koji predstavljaju promene i dodatke u odnosu na osnovni sloj. Na primer, svaki dodatni sloj može sadržavati instalaciju dodatnih paketa, kôda ili postavki. Ovo je ključna karakteristika Docker image-a jer omogućava deljenje zajedničkih slojeva između različitih image-ova, što economično koristi prostor za skladištenje.

  3. Metapodaci i Konfiguracije: Docker image sadrži metapodatke kao što su informacije o autoru, verziji, i druge informacije koje pomažu u identifikaciji i upravljanju image-om. Takođe, image može sadržavati i konfiguracione fajlove ili skripte koje se automatski pokreću prilikom pokretanja kontejnera.

Docker image-ovi se često deljenju i distribuiraju putem Docker Registra, kao što je Docker Hub. Ovo su online repozitorijumi koji omogućavaju programerima da dele, pretražuju i preuzimaju Docker image-ove. Kada želite pokrenuti aplikaciju, koristite Docker image da biste brzo stvorili izolovani kontejner sa svim potrebnim zavisnostima.

Docker Container

Docker Container predstavlja izvršnu instancu Docker Image-a. To je izolovani proces koji pokreće aplikaciju sa svim potrebnim zavisnostima i okolinom za izvršavanje. Svaki kontejner se izvršava nezavisno od drugih kontejnera i deli jezgro operativnog sistema sa host mašinom. Evo ključnih karakteristika Docker kontejnera:

  1. Izolacija: Kontejneri koriste mehanizme izolacije operativnog sistema kako bi se osiguralo da aplikacija u jednom kontejneru ne utiče na druge kontejnere ili host sistem. Svaki kontejner ima svoj sistemski prostor, mrežu i fajl sistem.

  2. Laganost: Kontejneri dele jezgro operativnog sistema sa host mašinom, što ih čini lakim i brzim za pokretanje. Kontejneri se dižu mnogo brže od virtualnih mašina, jer nema potrebe za pokretanjem kompletnog operativnog sistema za svaki kontejner.

  3. Prenosivost: Kontejneri su prenosivi između različitih okolina jer sadrže sve potrebne zavisnosti unutar sebe. Oni se mogu pokretati na različitim sistemima koji podržavaju Docker, bez obzira na razlike u operativnim sistemima ili konfiguraciji.

  4. Reproducibilnost: Zbog korišćenja Docker Image-a, svaki kontejner pokreće isti skup zavisnosti i konfiguracija. Ovo obezbeđuje konzistentnost između razvojnog okruženja, testiranja i produkcije.

  5. Jednostavnost upravljanja: Docker Engine omogućava lako upravljanje kontejnerima. Možete ih pokretati, zaustavljati, brisati ili skalirati prema potrebi.

Kada želite pokrenuti određenu aplikaciju, koristite odgovarajući Docker Image kako biste kreirali kontejner. Kontejneri se mogu pokretati lokalno na vašem računaru tokom razvoja, a zatim se prenositi u produkcijsko okruženje bez problema. Docker kontejneri su ključna komponenta u razvoju, testiranju i isporuci aplikacija.

Nov 12, 2023

/etc/security/time.conf

 Fajl /etc/security/time.conf koristi se za konfiguraciju kontrola vremena (time-based access controls) na sistemu. Ovaj fajl omogućava administratorima da definišu vremenske restrikcije za određene korisnike ili grupe korisnika. Evo šta neki od ključnih redova u ovom fajlu mogu značiti:

  1. Sintaksa reda:

    • services;ttys;users;times: Svaki red u fajlu ima ovu sintaksu, gde se specificiraju usluge, terminale, korisnici i vremenski okviri.
  2. Primer reda:

    • sshd ; * ; bob ; MoTuWeThFr0800-2000: Ovaj red označava da korisnik "bob" može pristupiti SSH tokom radnih dana od 8:00 do 20:00 časova.
  3. Polja reda:

    • services: Specifičira usluge (npr. sshd).
    • ttys: Specifičira terminale (npr. * za sve).
    • users: Specifičira korisnike ili grupe korisnika (npr. bob ili @admin za grupu admin).
    • times: Specifičira vremenske okvire kada je dozvoljen pristup.
  4. Vremenski format:

    • Mo - Ponedeljak, Tu - Utorak, We - Sreda, Th - Četvrtak, Fr - Petak, Sa - Subota, Su - Nedelja.
    • 0800-2000 - Od 8:00 do 20:00 časova.

Ovaj fajl omogućava postavljanje preciznih restrikcija pristupa na osnovu vremena, što je korisno u okviru politika bezbednosti sistema. Korišćenje ovakvih kontrola može ograničiti pristup određenim resursima tokom određenih perioda vremena.

/etc/pam.d/sshd

 Fajl /etc/pam.d/sshd je deo konfiguracije Pluggable Authentication Modules (PAM) sistema za SSH (Secure Shell) daemon. PAM omogućava fleksibilno upravljanje autentifikacijom korisnika i drugim aspektima pristupa sistema.

Evo šta neki od ključnih redova u ovom fajlu mogu značiti:

  1. auth linije:

    • auth required pam_sepermit.so: Ova linija proverava SELinux permissive mode, koji dozvoljava, ali ne i ograničava pristup. Ako je uključen, ovaj mod će dozvoliti korisnicima pristup, ali će zabeležiti potencijalne sigurnosne pretnje.
  2. account linije:

    • account required pam_nologin.so: Ova linija proverava da li postoji fajl /etc/nologin. Ako postoji, onemogućava prijavljivanje.
  3. password linije:

    • password requisite pam_pwquality.so ...: Ova linija koristi PAM modul za postavljanje zahteva za jaku lozinku, kao što su minimalna dužina, broj malih i velikih slova, brojeva, itd.
  4. session linije:

    • session optional pam_keyinit.so force revoke: Ova linija osigurava da proces dobija set ključeva tokom sesije.

Ove linije definišu različite korake autentifikacije i autorizacije koje SSH daemon izvršava kada se korisnik pokuša prijaviti. PAM sistem omogućava administratorima da prilagode ove korake u skladu sa specifičnim zahtevima i politikama sistema.