Hva er Docker Container? - Behold applikasjonen din ved hjelp av Docker



Docker Container er en lett alternativ løsning til Virtual Machine for å opprette, distribuere og kjøre applikasjoner i en container.

Vel, jeg håper du har lest mine tidligere blogger på Docker der jeg har dekket det grunnleggende om Docker. Her, i denne Docker Container-bloggen, vil jeg diskutere om hva som er Docker Containers og hvordan det fungerer. For det meste vil vi fokusere på hands-on og brukstilfeller av Docker.

Jeg har listet opp emnene for denne Docker Container-bloggen:





  • Hvorfor trenger vi Docker-containere?
  • Hvordan fungerer Docker Containers?
  • Brukstilfeller av Docker Container

Hvorfor trenger vi Docker-containere?

Jeg husker det fortsatt riktig, jeg jobbet med et prosjekt. I det prosjektet fulgte vi mikroservicearkitekturen. For de av dere som ikke vet hva som er mikroservice, ikke bekymre deg, jeg gir deg en introduksjon til det.

Ideen bak mikrotjenester er at visse typer applikasjoner blir lettere å bygge og vedlikeholde når de brytes ned i mindre, komponerbare biter som fungerer sammen. Hver komponent utvikles separat, og applikasjonen er da bare summen av dens bestanddeler.



Tenk på eksemplet nedenfor:

Online shoppingapp - Docker Container - Edureka

I diagrammet ovenfor er det en nettbutikk med separate mikrotjenester for brukerkonto, produktkatalog, ordrebehandling og handlekurver.



Vel, denne arkitekturen har mange fordeler:

  • Selv om en av mikrotjenestene dine mislykkes, påvirkes ikke hele applikasjonen din.
  • Det er lettere å administrere

Det er mange andre fordeler også, jeg vil ikke gå i detalj om mikrotjenester i dette innlegget. Men snart kommer jeg med et par blogger på mikrotjenester også.

I denne arkitekturen brukte vi CentOS Virtual Machines. Disse virtuelle maskinene ble konfigurert ved å skrive lange skript. Å konfigurere de virtuelle maskinene var ikke det eneste problemet.

Å utvikle slike applikasjoner krever start av flere mikrotjenester i en maskin. Så hvis du starter fem av disse tjenestene, trenger du fem virtuelle maskiner på den maskinen. Tenk på diagrammet nedenfor:

Det andre problemet er ganske vanlig, jeg vet at mange av dere kan forholde seg til det. Applikasjonen fungerer på en utviklers bærbare datamaskin, men ikke i testing eller produksjon. Dette kan skyldes at du ikke holder et konsistent datamiljø. Tenk på diagrammet nedenfor:

Det var mange andre problemer bortsett fra dette også, men jeg føler at disse problemene er nok for meg til å forklare deg behovet for Docker Containers.

Lær hvordan Docker-containere er bedre enn virtuelle maskiner

Så forestill deg om jeg gir 8 GB RAM til alle virtuelle maskiner, og jeg har 5 mikrotjenester som kjører på forskjellige virtuelle maskiner. I så fall vil disse virtuelle maskinene kreve 40 GB RAM. Vel, nå krever jeg at konfigurasjonen til vertsmaskinen min er veldig høy, nesten 44 GB RAM burde være der i vertsmaskinen min. Åpenbart er dette ikke en bærekraftig løsning for en slik arkitektur, fordi jeg kaster bort mye ressurser her.

Fint, jeg har mye ressurser å kaste bort, men jeg har fortsatt et problem med inkonsekvens i programvareleveransens livssyklus (SDLC). Jeg må konfigurere disse virtuelle maskinene i test så vel som i prod-miljø. Et eller annet sted i den prosessen ble ikke noe programvare oppdatert på testserveren, og Dev-teamet bruker den oppdaterte versjonen av programvaren. Dette fører til konflikter.

Hva om jeg bruker 100 virtuelle maskiner, så vil konfigurering av hver virtuell maskin ta mye tid, og samtidig er det også utsatt for feil.

La oss nå forstå hva som er Docker Container og hvordan det fungerer, og hvordan det løste problemet mitt.

Hva er en Docker Container?

Docker er et verktøy designet for å gjøre det lettere å lage, distribuere og kjøre applikasjoner ved hjelp av containere.

Du kan opprette Docker Containers. Disse beholderne vil inneholde alle binærfiler og biblioteker som kreves for din applikasjon eller mikroservice i mitt tilfelle. Så søknaden din er til stede i en container, eller du har containerisert søknaden din. Nå kan den samme beholderen brukes i Test and Prod-miljøet.

Docker Containers er en lett løsning på virtuelle maskiner, og den bruker verts-operativsystemet. Det beste, du trenger ikke å forhåndsallokere noe RAM til Docker Container, det vil ta det når og når det er nødvendig. Så med Docker Container trenger jeg ikke å bekymre meg for sløsing med ressurser.

La oss forstå nå hvordan en Docker Container fungerer.

Hvordan fungerer en Docker Container?

Diagrammet nedenfor er i utgangspunktet en måte å bruke Docker på. Og jeg antar at du har en idé om Docker Image og Dockerfile.

Gutter, jeg vet at diagrammet ser litt komplekst ut, men stol på meg at det ikke er så komplisert. Nedenfor er forklaringen på diagrammet, selv etter at du føler at det er vanskelig å forstå, kan du kommentere tvilen din, jeg vil ta opp spørsmålene ASAP.

  • En utvikler vil først skrive prosjektkoden i en Docker-fil og deretter bygge et bilde fra den filen.
  • Dette bildet inneholder hele prosjektkoden.
  • Nå kan du kjøre dette Docker-bildet for å lage så mange containere du vil.
  • Dette Docker-bildet kan lastes opp på Docker-huben (det er i utgangspunktet et skyarkiv for Docker Images, du kan holde det offentlig eller privat).
  • Dette Docker-bildet på Docker-huben kan trekkes av andre lag som QA eller Prod.

Dette forhindrer ikke bare sløsing med ressurser, men sørger også for at databehandlingsmiljøet som er der i en utviklers bærbare datamaskin replikeres også i andre team. Jeg føler nå, jeg trenger ikke å fortelle deg hvorfor vi trenger Docker.

Dette var en måte å bruke den på, jeg antar at dere må være nysgjerrige på å vite hvordan jeg brukte Docker for å løse problemet med mikrotjenester. La meg gi deg en oversikt over det samme.

Nedenfor er forklaringen på diagrammet:

  • For det første skrev vi de komplekse kravene i en Dockerfile.
  • Så presset vi den på GitHub.
  • Etter det brukte vi en CI-server (Jenkins).
  • Denne Jenkins-serveren vil trekke den ned fra Git, og bygge det nøyaktige miljøet. Dette vil bli brukt i produksjonsservere så vel som i testservere.
  • Vi distribuerte den til iscenesettelse (det refererer til distribusjon av programvaren din på servere for testformål, før vi distribuerer dem helt i produksjon.) Miljøer for testere.
  • I utgangspunktet rullet vi nøyaktig hva vi hadde innen utvikling, testing og iscenesettelse til produksjon.

Det vil være rettferdig å si det, Docker gjorde livet mitt enkelt.

Vel, det var historien om selskapet mitt, la oss se på casestudien fra Indiana University. Hvordan Docker løste problemene deres.

Indiana University Case-Study:

Indiana University er et offentlig universitetssystem med flere campus i staten Indiana, USA.

Problemstilling

De brukte egendefinerte skript for å distribuere applikasjonene i VM.

Miljøet deres ble optimalisert for deres eldre Java-baserte applikasjoner. Deres voksende miljø involverer nye produkter som ikke bare er java-baserte. For å gi studentene best mulig opplevelse, måtte universitetet begynne å modernisere applikasjonene.

Universitetet ønsket å forbedre måten de arkitekterte applikasjoner på, ved å gå til en mikrotjenestebasert arkitektur for applikasjonene deres.

Sikkerhet var nødvendig for studentdataene, for eksempel SSN-er og studenthelsedata.

Løsning:

Alle problemene ble løst av Docker Data Center (DDC), se på diagrammet nedenfor:

Docker Trusted Registry - Den lagrer Docker Images.

UCP (Universal Control Plane) Web UI - Hjelper med å administrere hele klyngen fra ett sted. Tjenestene distribueres ved hjelp av UCP-webgrensesnittet ved bruk av Docker-bilder som er lagret i DTR (Docker Trusted Registry).

IT ops team bruker Universal Control Plane for å skaffe Docker installert programvare på verter, og deretter distribuere applikasjonene sine uten å måtte utføre en rekke manuelle trinn for å sette opp all infrastruktur.

UCP og DTR integreres med LDAP-serveren for rask tilgang til applikasjonene.

Jeg håper dere har lest de forrige bloggene for å lære det grunnleggende om Docker.

Nå skal jeg forklare deg hvordan vi kan bruke Docker Compose for applikasjoner med flere containere.

Docker Hands-On:

Jeg antar at du har installert Docker.Jeg vil bruke Docker Compose i dette innlegget, nedenfor har jeg gitt en liten introduksjon til Docker Compose.

Docker komponere: Det er et verktøy for å definere og kjøre Docker-applikasjoner med flere containere. Med Docker Compose kan du bruke en Compose-fil til å konfigurere programmets tjenester. Deretter, ved å bruke en enkelt kommando, kan du opprette og starte alle tjenestene fra konfigurasjonen.

Anta at du har flere applikasjoner i forskjellige containere, og at alle disse containerne er koblet sammen. Så du vil ikke utføre hver av disse containerne en etter en. Men du vil kjøre disse containerne med en enkelt kommando. Det er her Docker Compose kommer inn på bildet. Med den kan du kjøre flere applikasjoner i forskjellige containere med en enkelt kommando. dvs. docker-komponere opp.

Eksempel: Tenk deg at du har forskjellige containere, en som kjører en webapp, en annen som kjører en postgres og en annen som kjører redis, i en YAML-fil. Det kalles docker compose-fil, derfra kan du kjøre disse containerne med en enkelt kommando.

La oss ta et eksempel til:

Anta at du vil publisere en blogg, for det vil du bruke CMS (Content Management System), og wordpress er det mest brukte CMS. I utgangspunktet trenger du en container for WordPress, og du trenger en container til som MySQL for backend, den MySQL-containeren skal være koblet til wordpress-beholderen. Vi trenger også en container til for Php Myadmin som vil bli koblet til MySQL-databasen.

Hva med å utføre eksemplet ovenfor praktisk.

Fremgangsmåten involvert:

  1. Installer Docker Compose :
  2. Installer WordPress: Vi bruker tjenestemannen WordPress og MariaDB Docker bilder.
  3. Installer MariaDB: Det er en av de mest populære databaseserverne i verden. Den er laget av de opprinnelige utviklerne av MySQL. MariaDB er utviklet som programvare med åpen kildekode, og som en relasjonsdatabase gir den et SQL-grensesnitt for tilgang til data.
  4. Installer PhpMyAdmin: Det er et gratis programvareverktøy skrevet i PHP, ment å håndtere administrasjonen av MySQL over nettet.
  5. Opprett WordPress-nettstedet:

La oss komme i gang!

Installer Docker Compose:

Installer Python Pip først:

sudo apt-get install python-pip

Nå kan du installere Docker Compose:

sudo pip installer docker-compose

Installer WordPress:

Lag en wordpress-katalog:

mkdir wordpress

Gå inn i denne WordPress-katalogen:

cd wordpress /

Opprett en Docker Compose YAML-fil i denne katalogen, og rediger den deretter ved hjelp av gedit:

sudo gedit docker-compose.yml

Lim inn kodelinjene nedenfor i den yaml-filen:

wordpress: image: wordpress lenker: - wordpress_db: mysql porter: - 8080: 80 wordpress_db: image: mariadb miljø: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin lenker: - wordpress_db: mysql porter: - 8181: 80 MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Jeg vet at du vil at jeg skal forklare denne koden, så hva jeg skal gjøre, jeg tar små deler av denne koden og forklarer hva som skjer.

wordpress_db: ... miljø: MYSQL_ROOT_PASSWORD: edureka ...

Dette vil sette en miljøvariabel inne i wordpress_db-beholderen kalt MYSQL_ROOT_PASSWORD med ønsket passord. MariaDB Docker-bildet er konfigurert for å se etter denne miljøvariabelen når den starter, og vil ta seg av å konfigurere DB med en rotkonto med passordet definert som MYSQL_ROOT_PASSWORD.

wordpress: ... porter: - 8080: 80 ...

Det første portnummeret er portnummeret på verten, og det andre portnummeret er porten inne i containeren. Så denne konfigurasjonen videresender forespørsler på port 8080 til verten til standard webserverport 80 inne i containeren.

phpmyadmin: image: corbinu / docker-phpmyadmin linker: - wordpress_db: mysql porter: - 8181: 80 miljø: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Dette griper docker-phpmyadmin av fellesskapsmedlem corbinu, kobler den til vår wordpress_db-beholder med navnet mysql (som betyr fra innsiden av phpmyadmin-beholderhenvisninger til vertsnavnet mysql vil bli videresendt til vår wordpress_db-container), utsetter porten 80 på port 8181 i vertssystemet, og setter til slutt et par miljøvariabler med MariaDB-brukernavnet og passordet vårt. Dette bildet tar ikke automatisk miljøvariabelen MYSQL_ROOT_PASSWORD fra wordpress_dbcontainer-miljøet, slik wordpress-bildet gjør. Vi må faktisk kopiere linjen MYSQL_ROOT_PASSWORD: edureka fra wordpress_db-beholderen, og sette brukernavnet til root.

Start nå søknadsgruppen:

docker-komponere opp -d

Det er alt du trenger å gjøre. Du kan legge til så mange containere du vil på denne måten, og koble dem alle sammen på en hvilken som helst måte du vil.

Gå nå til port 8080 i nettleseren, og bruk din offentlige IP eller vertsnavn, som vist nedenfor:

lokal vert: 8080

Fyll ut dette skjemaet og klikk på installer WordPress.

Når den er ferdig, kan du gå til serverens IP-adresse igjen (denne gangen ved hjelp av port 8181, f.eks. Localhost: 8181). Du blir møtt av phpMyAdmin-påloggingsskjermen:

hvordan du bruker skannerklassen i java

Fortsett og logg inn med brukernavnet og passordet du har angitt i YAML-filen, og du vil kunne bla i databasen din. Du vil merke at serveren inneholder en wordpress-database, som inneholder alle dataene fra WordPress-installasjonen din.

Her avslutter jeg Docker Container-bloggen min. Jeg håper du har hatt glede av dette innlegget. Du kan sjekke andre blogger i serien også, som tar for seg det grunnleggende om Docker.

Hvis du fant denne Docker Container-bloggen relevant, sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk av mer enn 250 000 fornøyde elever spredt over hele verden. Edureka DevOps Certification Training-kurset hjelper lærere å få ekspertise i forskjellige DevOps-prosesser og verktøy som Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack og GIT for å automatisere flere trinn i SDLC.

Har du et spørsmål til meg? Vennligst nevn det i kommentarfeltet, så kommer jeg tilbake til deg.