Zakaj torej uporabljati Docker?
- Enakost okolja: Kjerkoli zaženeš aplikacijo (Linux, Windows, Mac), bo delovala enako.
- Izolacija procesov: Vsaka aplikacija v svojem kontejnerju je ločena od drugih.
- Poenostavitev "devops" procesov: Enostavna izdelava, prenosnost in distribucija aplikacij.
- Lahkost in hitrost v primerjavi z virtualnimi stroji.
Primer uporabe:
1. Zaženite razvojne strežnike (npr. MongoDB, MySQL)
Namesto da lokalno nameščaš MySQL, PostgreSQL ali kaj podobnega, jih lahko poganjaš v Docker kontejnerjih. Na primer, za zagon MySQL:
- docker run --name moj-mysql -e MYSQL_ROOT_PASSWORD=geslo123 -d mysql:latest
Kaj ta ukaz naredi?
- Prenese MySQL kontejner s Dockerhub-a (če ga še nimaš lokalno).
- Zažene kontejner moj-mysql z MySQL strežnikom.
- Doda MYSQL_ROOT_PASSWORD.
Sidrišče podatkov (volumni) poskrbijo, da podatki ostanejo, tudi če ugasneš kontejner.
2. Ustvari okolje za spletno aplikacijo
Če razvijaš aplikacijo, lahko vse njene sestavne dele (npr. PHP, Apache, Node.js, baze podatkov ...) poganjaš v Docker.
Docker Compose
Izjemno uporaben je Docker Compose, kjer definiraš celotno aplikacijo v datoteki docker-compose.yml. Primer docker-compose.yml za PHP aplikacijo:
version: "3.9"
services:
web:
image: php:8.3-apache
ports:
- "8080:80"
volumes:
- ./koda:/var/www/html
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: geslo123
services:
web:
image: php:8.3-apache
ports:
- "8080:80"
volumes:
- ./koda:/var/www/html
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: geslo123
Aplikacijo zaženi z:
- docker-compose up
To bo zagnalo tako spletni strežnik s PHP kot tudi MySQL bazo z enim ukazom.
3. Testiranje aplikacij ali knjižnic
Z Dockerjem lahko hitro testiraš aplikacije, brez da bi jih dejansko namestil na tvoj sistem. Na primer, za testiranje PostgreSQL:
- docker run --name moj-postgres -e POSTGRES_PASSWORD=skrivnost -d postgres
Potem se povežeš na bazo:
- docker exec -it moj-postgres psql -U postgres
4. Zaženite že pripravljene aplikacije
Docker Hub vsebuje ogromno kontejnerjev za različne aplikacije. Na primer:
- Laravel aplikacijo
- Wordpress in WooCommerce
- Redis, RabbitMQ, Elasticsearch
- Grafana za monitoring
Primer za WordPress:
- docker run --name wordpress -p 8080:80 -e WORDPRESS_DB_HOST=mysql_host -e WORDPRESS_DB_USER=wp_user -e WORDPRESS_DB_PASSWORD=wp_pass -d wordpress
Osnovni ukazi Dockerja, ki jih je dobro poznati:
| UKAZ |
OPIS |
|---|---|
| docker pull slika | Prenese Docker sliko (npr. docker pull mysql) |
| docker images | Prikaže vse slike, ki jih imaš lokalno |
| docker run [parametri] slika | Zagon kontejnerja (premišljenega vsebnika) |
| docker ps | Prikaže tekoče kontejnerje |
| docker ps -a | Prikaže vse kontejnerje (tudi ustavljene) |
| docker stop ime_kontejnerja | Ustavi kontejner |
| docker start ime_kontejnerja | Ponovno zažene že ustvarjen kontejner |
| docker rm ime_kontejnerja | Izbriše kontejner |
| docker logs ime_kontejnerja | Pogledaš loge za določeni kontejner |
| docker exec -it ime_kontejnerja | Vstop v kontejner (interaktivno, npr. za terminal ali bash znotraj njega) |
Z Dockerjem torej lahko poenostaviš svoje razvojno okolje, testiraš aplikacije, upravljaš strežnike ali celo gostuješ majhne lastne projekte.