![](https://jezgra.online/wp-content/uploads/2022/03/whale.webp)
Docker je platforma za virtualizaciju razvojnih projekata. Tehnologija je nešto poput VirtualBox-a kojeg podešavamo sa skriptama i na kojem obično imamo posebne minimalizirane verzije Linux-a.
A zašto ga koristimo?
Pa zato što imamo projekt koji se nalazi u realnom razvojnom okruženju. Odnosno projekt kojeg je moguće prebaciti na bilo koji OS.
Ja naravno koristim Linux <3 (trenutačno Debian) pa ćemo postaviti Docker na Linux platformu.
Debian
U terminalu “kastamo spel” za instalaciju:
sudo apt-get install docker docker-compose
Pa pokrećemo docker servis:
sudo systemctl start docker
Sudi me sudo
Obično nam treba ‘sudo’ komanda za korištenje dockera. Da to zaobiđemo koristimo:
sudo usermod -aG docker ${USER}
Potreban je restart računala.
Nakon restarta ponovno pokrenite docker servis.
Kontejneri
U VirtualBox-u imamo “image” sa operativnim sustavom. Radi se o običnoj binary datoteci koje se simulira pravi harddisk. Kontejneri su više-manje to. Image sa operativnim sustavom, serverom, serverskim jezikom i projektom. Kontejneri kontejneri mogu biti modularni koji za povezivanje koriste dobro nam znane, Linux bridge networking/socket tehnologije. Takve modularne elemente je moguće slagati/kombinirati u veće projekte. Kontejnere nalazimo online na:
https://hub.docker.com/
Hello world
Ovo je testni kontejner:
https://hub.docker.com/_/hello-world
…pa ga preuzimamo sa:
docker pull hello-world
![](https://jezgra.online/wp-content/uploads/2022/03/hello_world.jpg)
Sada možemo unijeti naredbu s kojom vidimo instalirane image:
docker images
![](https://jezgra.online/wp-content/uploads/2022/03/docker_images.jpg)
Ili za info instaliranog image-a:
docker images hello-world
A docker sa slikom pokrećemo sa:
docker run hello-world
![](https://jezgra.online/wp-content/uploads/2022/03/hello_world_run.jpg)
Sve to super, al de mi gui…
Ispočetka Docker nije dolazio za GUI verzijom za Linux…
![](https://jezgra.online/wp-content/uploads/2022/03/fu_docker.jpg)
Pa su linuksšćani/fribiesdiušćani bili primorani koristiti alternative. Na Linuxu postoji par opcija. Mi ćemo uzeti Portainer koji ima i besplatnu verziju.
https://hub.docker.com/r/portainer/portainer-ce
Pa pulamo image:
docker pull portainer/portainer-ce
Volume je međuspremnik kojega kontejneri koriste za spremanje podataka
koji ostaju nakon ponovnog učitavanja.
docker volume create portainer_data
I napokon startamo kontejner:
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Preusmjerite vaš interent preglednik na:
http://localhost:9000/
Pravimo ‘admin’ korisnika i kliknemo na “Get started”.
![](https://jezgra.online/wp-content/uploads/2022/03/portainer_create_user.jpg)
![](https://jezgra.online/wp-content/uploads/2022/03/portainer-1024x758.jpg)
…i kliknemo na ‘local’:
![](https://jezgra.online/wp-content/uploads/2022/03/portainer3-1024x352.jpg)
Pristup kontejneru preko terminala
![](https://jezgra.online/wp-content/uploads/2022/03/connect_to_console1-1024x349.jpg)
![](https://jezgra.online/wp-content/uploads/2022/03/connect_to_console2-1024x323.jpg)
U Portainer-u idemo na ‘Containers’ tab pa nakon toga kliknemo na sličicu terminala i zatim na ‘Connect’ dugme.
Još o terminal naredbama
Taskmanager za kontejnere:
docker ps
![](https://jezgra.online/wp-content/uploads/2022/03/docker_ps-1024x327.jpg)
Za uklanjanje kontejnera koristimo ‘rm’ argument (id dobijemo sa ‘docker images’):
docker rm -f <container-id-or-name>
Da bismo zaustavili kontejner:
sudo docker stop <container-id-or-name>
Compose
Za kompliciranije projekte koristimo ‘docker compose’. To je u biti YAML datoteka sa konfiguracijom. Sa ‘compose’ mi pravimo “modularne” spojeve između docker kontejera.
Pa ćemo za probu instalirati najomiljeniju web aplikaciju na internetu, WordPress…
mkdir ./wordpress/ cd ./wordpress/ touch ./docker-compose.yml
Sadržaj ‘docker-compose.yml’:
version: '3.3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "7000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {}
I sada samo (moramo biti u novom ‘wordpress’ diru):
docker-compose up --build
Ukoliko zaglavite, problemi sa error-ima ili slično, otvorite Portainer, na ‘Containers’ tabu izaberite, zaustavite ili obrišite problematične kontejnere. A u ‘Networks’ tabu možete obrisati problematične konekcije. Nakon toga pokušajte ponovno build komandu.
Na kraju u pregledniku otvaramo:
http://localhost:7000
![](https://jezgra.online/wp-content/uploads/2022/03/wordpress-1024x748.jpg)