Programiranje

Šta su Docker kontejneri i zašto su važni za programere?

docker
Sending

Kada razmišljamo o razvoju softvera, često se susrećemo sa problemima vezanim za različitost okruženja na kojima će se aplikacija pokretati. Svako računarsko okruženje ima različitu konfiguraciju, softverske i hardverske zahteve, što znači da će aplikacija koja radi besprekorno na jednom računaru, možda imati probleme na drugom računaru sa drugačijim podešavanjima.
Ovaj problem se može rešiti korišćenjem virtualnih mašina, ali to može biti teško, sporije i resursno zahtevnije. Ovde ulaze kontejneri, koji su popularni u svetu programiranja kao rešenje ovog problema.

Kontejneri su vrsta virtuelizacije na nivou operativnog sistema, koja omogućava da aplikacija radi u izolovanom okruženju koje je nezavisno od okruženja na host računaru. To znači da različita okruženja na kojima se aplikacija pokreće više nisu problem. Kontejneri su laki, brzi, portabilni i mogu se kreirati, pokrenuti i zaustaviti vrlo brzo. Osim toga, oni su izolovani od drugih kontejnera na istom računaru, što znači da se aplikacija može sigurno pokretati bez straha od sukoba resursa.

Docker je najpopularniji alat za rad sa kontejnerima u svetu programiranja. On omogućava kreiranje, upravljanje i razmenu kontejnera. U ovom vodiču ću vas upoznati sa Docker-om i pokazati kako se koristi za rad sa kontejnerima.

Instalacija Dockera

Prvi korak u radu sa Docker-om je instalacija softvera na vaš računar. Docker može biti instaliran na Windows, Mac i Linux operativnim sistemima. Ovde ću se usredsrediti na instalaciju Docker Desktop-a na Windows i Mac operativne sisteme.

Windows Da biste instalirali Docker Desktop na Windows-u, preuzmite instalacioni fajl sa zvanične stranice https://www.docker.com/products/docker-desktop. Nakon preuzimanja, pokrenite instalacioni fajl i sledite uputstva za instalaciju. Nakon instalacije, otvorite Docker Desktop aplikaciju.

Mac Da biste instalirali Docker Desktop na Mac-u, preuzmite instalacioni fajl sa zvanične stranice https://www.docker.com/products/docker-desktop. Nakon preuzimanja, pokrenite instalacioni fajl i sledite uputstva za instalaciju. Nakon instalacije, otvorite Docker Desktop aplikaciju.

Docker komande

Sada kada smo instalirali Docker, možemo početi sa radom. Docker se uglavnom koristi preko komandne linije, a ovo su neke od najčešćih Docker komandi koje ćemo koristiti u ovom vodiču:

  1. docker run
    Ova komanda se koristi za pokretanje novog kontejnera.
    Na primer, ako želimo pokrenuti MySQL bazu podataka u kontejneru, komanda bi mogla izgledati ovako:
    docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql.
    U ovoj komandi, d označava pokretanje kontejnera u pozadini, p označava prosleđivanje porta između kontejnera i hosta, a -e označava prosleđivanje environment varijabli kontejneru.
  2. docker ps
    Ova komanda se koristi za pregled svih pokrenutih kontejnera. Može se koristiti sa dodatnom opcijom -a za prikaz svih kontejnera, uključujući i one koji su završeni.
  3. docker stop
    Ova komanda se koristi za zaustavljanje pokrenutog kontejnera. Na primer, ako želimo da zaustavimo kontejner sa ID-om 123456, komanda bi mogla izgledati ovako: docker stop 123456.
  4. docker rm
    Ova komanda se koristi za brisanje kontejnera. Na primer, ako želimo da izbrišemo kontejner sa ID-om 123456, komanda bi mogla izgledati ovako: docker rm 123456.
  5. docker images
    Ova komanda se koristi za pregled svih slika koje su dostupne na vašem računaru. Može se koristiti sa dodatnom opcijom -a za prikaz svih slika, uključujući i one koje su nesagrađene.
  6. docker rmi
    Ova komanda se koristi za brisanje slika. Na primer, ako želimo da izbrišemo sliku sa imenom mysql, komanda bi mogla izgledati ovako: docker rmi mysql.

Ovo su samo neke od osnovnih Docker komandi. Postoji mnogo drugih opcija koje se mogu koristiti u kombinaciji sa ovim komandama, u zavisnosti od potreba.

Dockerfile

Dockerfile je tekstualni dokument koji definiše konfiguraciju i podešavanja kontejnera. U Dockerfile-u, možemo definisati bazu za našu aplikaciju, dodati potrebne biblioteke i konfigurisati okruženje. Kada se Dockerfile izvrši, stvara se Docker slika, koja se može koristiti za pokretanje novih kontejnera.

Evo primera jednostavnog Dockerfile-a:

FROM python:3.7-alpine
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [ "python", "./app.py" ]

Ovaj Dockerfile počinje sa definisanjem osnovne slike – python:3.7-alpine. Zatim se definiše radni direktorijum, kopiraju se fajlovi sa potrebnim bibliotekama (requirements.txt) i pokreće se instalacija biblioteka pomoću pip komande. Zatim se kopiraju sve datoteke iz trenutnog direktorijuma u kontejner i konačno se postavlja komanda za pokretanje aplikacije – u ovom slučaju app.py.

Ovaj Dockerfile možemo izgraditi koristeći docker build komandu. Na primer, ako se Dockerfile nalazi u trenutnom direktorijumu, možemo izgraditi sliku koristeći komandu docker build -t myapp .
. Ovde se -t koristi za nazivanje nove slike, a . označava trenutni direktorijum.

Nakon izgradnje slike, možemo pokrenuti novi kontejner koristeći docker run komandu, na primer:

docker run -it -p 8080:8080 myapp. 

Ovde se -it koristi za pokretanje kontejnera u interaktivnom modu, a -p za mapiranje porta.

Resursi za dalje učenje

Ovaj vodič je samo uvod u Docker i kontejnere. Ako želite da saznate više, evo nekoliko resursa koje možete koristiti za dalje učenje:

  1. Oficijalna Docker dokumentacija – https://docs.docker.com/
  2. Kurs „Docker Mastery“ na Udemy-ju – https://www.udemy.com/course/docker-mastery/
  3. „Docker for the Absolute Beginner“ – knjiga sa mnogo recepata za Docker – https://www.oreilly.com/library/view/docker-cookbook/9781491919772/
  4. „Docker in Action“ – knjiga koja opisuje praktične primene Docker-a – https://www.manning.com/books/docker-in-action

Kao programer, važno je razumeti kako kontejneri funkcionišu i kako se Docker može koristiti za olakšavanje razvoja i implementacije aplikacija. Nadam se da vam je ovaj vodič pomogao da steknete osnovno znanje o Docker-u i kontejnerima i da ćete nastaviti da učite i eksperimentišete sa Docker-om.

Napišite komentar