Ubuntu 24.04
Isto važi za Ubuntu 22.04. Prvo uklonite pakete koji bi se sukobili sa zvaničnim (ako ih nema, komanda samo javi da nisu instalirani):
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
sudo apt-get remove -y $pkg
donesudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-worldAlmaLinux 9 i Rocky Linux 9
Na ovim sistemima je često instaliran Podman, koji se sukobljava sa Dockerom, pa ga prvo uklonite. Zvanični Docker paketi se instaliraju iz RHEL repozitorijuma:
sudo dnf remove -y docker docker-client docker-common docker-latest docker-engine podman runc
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo docker run hello-worldFirewall na ovim sistemima je firewalld. Za web server otvorite HTTP i HTTPS: sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload.
Posle instalacije: korisnik i provera
sudo usermod -aG docker $USER
# odjavite se i ponovo prijavite, pa:
docker version
docker compose versionPrvi projekat sa Docker Compose-om
Primer: Nginx koji služi statičke fajlove, dostupan samo lokalno na portu 8080.
services:
web:
image: nginx:stable
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
volumes:
- ./html:/usr/share/nginx/html:romkdir -p ~/prvi/html && cd ~/prvi
echo "Radi" > html/index.html
docker compose up -d
curl http://127.0.0.1:8080 # ispisuje: Radi
docker compose logs -f web
docker compose down # zaustavlja i briše kontejner (fajlovi ostaju)Kad treba domen sa SSL-om, ispred kontejnera stavite Caddy ili Nginx. Kompletan primer sa Caddy-jem je u vodiču kako instalirati n8n na VPS.
Firewall: Docker i ufw
Docker sam upisuje iptables pravila za objavljene portove. Zato port objavljen kao "8080:80" bude dostupan sa interneta čak i kad ga ufw ne dozvoljava. Dva pravila koja to rešavaju:
- Servise iza reverse proxy-ja objavljujte samo lokalno:
"127.0.0.1:8080:80", ili ih uopšte ne objavljujte nego ih proxy zove po imenu servisa u istoj Compose mreži. - Javno objavite samo portove 80 i 443 (proxy) i 22 (SSH).
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ss -tlnp # proverite šta zaista sluša na 0.0.0.0Česte greške i rešenja
| Poruka | Uzrok i rešenje |
|---|---|
| permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock | Korisnik nije u grupi docker ili se nije ponovo prijavio. sudo usermod -aG docker $USER, pa nova SSH sesija. |
| Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? | Servis ne radi. sudo systemctl enable --now docker, pa sudo systemctl status docker za razlog. |
| docker-compose: command not found | Instaliran je Compose v2. Koristite docker compose (sa razmakom). |
| Bind for 0.0.0.0:80 failed: port is already allocated | Port već koristi drugi kontejner ili servis (često Nginx ili Apache na hostu). sudo ss -tlnp | grep :80, pa ugasite taj servis ili promenite port. |
| no space left on device | Disk su popunile slike i logovi. docker system df, pa docker image prune -a i ograničenje veličine logova. |
| Conflicting values set for option Signed-By | Repozitorijum je dodat dva puta (na primer i u docker.list i u docker.sources). Obrišite jedan fajl iz /etc/apt/sources.list.d/. |
Šta dalje: n8n u Dockeru, Ollama i Open WebUI ili Next.js aplikacija.