Namestitev Dockerja na priljubljenih distribucijah Linux: vodnik za namestitev Dockerja v sistemu Linux
Raven: Srednja
Ocenjeni čas: ~15 minut
Cilj: Nastaviti varno, decentralizirano okolje z namestitvijo Dockerja za samostojno gostovanje osebnih storitev, kot so Nextcloud, Bitwarden in Matrix.
Uvod
Z gostovanjem lastnih »oblačnih« storitev zagotovite zasebnost in popolno lastništvo nad podatki. Za uvedbo storitev, kot so Nextcloud (shranjevanje datotek), Bitwarden (upravljanje gesel) ali Matrix (varna komunikacija), brez ukvarjanja z zapletenimi odvisnostmi na ravni gostitelja potrebujete izolirana okolja. V tem priročniku bomo predstavili, kako namestiti Docker v Linux in zgraditi robustno, ponovljivo osnovo za samostojno gostovanje. Ne glede na to, ali potrebujete celotno postavitev Dockerja v Linuxu za en strežnik ali za celotno floto, vsi spodnji koraki veljajo za Ubuntu, Debian in distribucije, združljive z RHEL. Ob koncu tega priročnika za namestitev Dockerja v Linux boste imeli produkcijsko pripravljeno okolje z varnostnimi privzetimi nastavitvami po najboljših praksah.
Terminologija
Preden nadaljujete, se prepričajte, da razumete te osnovne pojme:
- Docker: platforma za razvoj, dostavo in izvajanje aplikacij v izoliranih okoljih.
- Docker Engine: osrednja tehnologija odjemalec-strežnik, ki ustvarja in izvaja vsebnike.
- Vsebnik (Container): standardizirana izvršljiva komponenta, ki združuje izvorno kodo aplikacije s knjižnicami operacijskega sistema in odvisnostmi, potrebnimi za njeno izvajanje.
- Slika (Image): predloga samo za branje z navodili za ustvarjanje vsebnika.
- Demon Dockerja (Docker daemon): storitev v ozadju na gostitelju, ki upravlja gradnjo, izvajanje in distribucijo vsebnikov.
- Docker CLI: vmesnik ukazne vrstice za komunikacijo z demonom.
- Docker Hub: javni register, ki ga vzdržuje Docker, za iskanje in deljenje slik vsebnikov.
- Register (Registry): sistem za shranjevanje in distribucijo slik vsebnikov.
- Namestitev: postopek, s katerim so programi pripravljeni za izvajanje.
- Upravljalnik paketov: programsko orodje, ki avtomatizira nameščanje, posodabljanje, konfiguriranje in odstranjevanje programov.
- Skladišče (Repository): osrednja lokacija, kjer so shranjeni in vzdrževani programski paketi.
- Uradno skladišče Dockerja: zaupanja vreden vir, ki ga vzdržuje Docker, za pridobivanje stabilnih programskih paketov.
- Paket: stisnjen arhiv datotek, ki vsebuje vse datoteke določene aplikacije.
- Odvisnost: program ali knjižnica, ki jo drug program potrebuje za pravilno delovanje.
- Stabilna izdaja (Stable release): različica programske opreme, ki je bila temeljito preizkušena in velja za zanesljivo za produkcijsko uporabo.
- Različica: edinstveno stanje programske opreme, ki odraža njene posebne funkcije in popravke.
Predpogoji
Pred začetkom se prepričajte, da so izpolnjeni naslednji pogoji:
- Operacijski sistem: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 ali distribucija, združljiva z RHEL (AlmaLinux, Rocky, RHEL) 8/9/10
- Dostop: dostop sudo ali root do strežnika
- Zahtevano znanje: samozavestna uporaba ukazne vrstice Linuxa
Korak 1: Nastavitev skladišča Docker
Da dobite najnovejšo, varno in stabilno izdajo, vedno uporabljajte uradno skladišče Dockerja in ne privzetih skladišč operacijskega sistema.
Za Ubuntu:
Najprej posodobite indeks upravljalnika paketov Linuxa in namestite potrebne pakete, da lahko apt uporablja skladišče prek HTTPS:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release
Dodajte uradni ključ GPG Dockerja:
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Nastavite stabilno skladišče:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Za Debian:
Koraki za namestitev Dockerja v Debian sledijo postopku za Ubuntu, vendar kažejo na naslov URL skladišča, značilen za Debian. Najprej posodobite indeks upravljalnika paketov Linuxa in namestite potrebne pakete:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release
Dodajte uradni ključ GPG Dockerja:
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Nastavite stabilno skladišče:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Za distribucije, združljive z RHEL (AlmaLinux, Rocky, RHEL):
Namestite paket yum-utils in nastavite stabilno skladišče:
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Docker objavlja pakete za vse distribucije, združljive z RHEL (vključno z AlmaLinux in Rocky Linux), pod potjo skladišča centos. Uporaba tega naslova URL je pričakovana in v celoti podprta.
Rezultat: Skladišče Docker je zdaj dodano v sistem, kar upravljalniku paketov omogoča prenos najnovejših paketov Docker.
Korak 2: Namestitev Dockerja v Ubuntu in Debian
Ko je skladišče Docker nastavljeno, nadaljujte z namestitvijo Docker Engine v Ubuntu (ali Debian - ukazi so enaki). Ta korak velja za obe distribuciji.
Najprej odstranite morebitne pakete v navzkrižju, ki jih zagotavljajo skladišča operacijskega sistema:
sudo apt remove docker.io podman-docker containerd runc
Znova posodobite indeks paketov apt in z upravljalnikom paketov Linuxa namestite potrebne komponente:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin
Rezultat: Ukaz se izvede in iz skladišča Docker prenese pakete ter vse potrebne odvisnosti. Upravljalnik paketov bi moral namestitev Docker Engine zaključiti brez napak.
docker-ce pomeni Docker Community Edition, brezplačno različico, ki je idealna za samostojno gostovanje.
Korak 3: Namestitev Dockerja v distribucije, združljive z RHEL (AlmaLinux, Rocky, RHEL)
V sistemih na osnovi RHEL za namestitev Docker Engine uporabite yum.
Najprej odstranite morebitne pakete v navzkrižju, ki jih zagotavljajo skladišča operacijskega sistema:
sudo yum remove docker docker-client docker-client-latest docker-common \ docker-latest docker-latest-logrotate docker-logrotate docker-engine \ podman runc
Zaženite naslednji ukaz:
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin
Rezultat: Upravljalnik paketov namesti potrebne pakete. Pozvani boste, da sprejmete ključ GPG (razen če podate stikalo -y); potrdite ga. Ko je postopek končan, se prikaže sporočilo o uspehu.
Korak 4: Preverjanje namestitve Docker Engine
Po namestitvi je obnašanje demona Docker odvisno od distribucije. V Ubuntuju in Debianu se docker.service ob namestitvi samodejno zažene. V distribucijah družine RHEL se ne.
Samo družina RHEL: če je postopek namestitve posodobil jedro (na primer prek odvisnosti kernel-core), pred zagonom storitve Docker znova zaženite strežnik:
sudo reboot
Če ta korak izpustite, lahko systemctl start docker odpove z napakami br_netfilter / addrtype, ker se jedro, ki se izvaja, ne ujema več z nameščenimi moduli.
Ko strežnik teče na trenutnem jedru, zaženite in omogočite storitev. Naslednji ukazi so idempotentni in jih je varno izvajati v vseh sistemih:
sudo systemctl start docker sudo systemctl enable docker
Rezultat: Demon Docker se zažene, sistem pa ustvari simbolno povezavo, ki zagotovi samodejni zagon ob vsakem ponovnem zagonu.
Uspešnost namestitve Docker Engine preverite z zagonom slike hello-world:
sudo docker run hello-world
Rezultat: Docker CLI vzpostavi stik z demonom Docker, iz Docker Hub prenese sliko hello-world in zažene vsebnik. V terminalu bi morali videti sporočilo »Hello from Docker!«.
Korak 5: Koraki po namestitvi Dockerja
Privzeto zagon ukazov Docker zahteva sudo. Če želite ukaze Docker izvajati kot uporabnik brez pravic root, morate svojega uporabnika dodati v skupino docker. To so bistveni koraki po namestitvi Dockerja za udobno upravljanje vaše samostojno gostovane infrastrukture.
Ustvarite skupino docker (če še ne obstaja):
getent group docker || sudo groupadd docker
Dodajte svojega uporabnika v skupino docker:
sudo usermod -aG docker $USER
Rezultat: Uporabnik je dodan v skupino. Da bodo spremembe začele veljati, se morate odjaviti in znova prijaviti ali pa novo članstvo v skupini aktivirati v trenutni seji:
newgrp docker
newgrp docker ustvari novo lupino s posodobljenim članstvom v skupinah. Vsak ukaz docker, ki ga nato zaženete, bo deloval brez sudo, vendar samo znotraj te nove lupine. Odpiranje drugega terminala še vedno zahteva popolno ponovno prijavo.
Članstvo v skupini docker daje pravice, enakovredne dostopu root do gostitelja. V okoljih samostojnega gostovanja, kjer imate prednost varnost, resno razmislite o zagonu Dockerja v načinu rootless (glejte Korak 6).
Po zagonu newgrp docker (ali po odjavi in ponovni prijavi) preizkusite konfiguracijo z ukazom brez sudo:
docker run hello-world
Rezultat: Znova bi morali videti sporočilo »Hello from Docker!«, kar potrjuje, da so bili koraki po namestitvi Dockerja uspešni.
Alternativa: hitra namestitev z priročno skripto
Za testna ali razvojna okolja Docker ponuja priročno skripto (convenience script).
Ta metoda ni priporočljiva za produkcijo. Izvaja se brez pripenjanja različic, brezpogojno nadgradi Docker, če je že nameščen, in prenese vse odvisnosti brez preverjanja.
Priporočljivo je, da skripto prenesete in jo pred zagonom pregledate:
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
Korak 6 (neobvezno): Zagon Dockerja v načinu rootless
V okoljih samostojnega gostovanja zagon Dockerja v načinu rootless poveča varnost, saj se demon Docker in vsebniki izvajajo kot uporabnik brez pravic root.
6.1 Predpogoji
Najprej ustavite in onemogočite sistemsko storitev Docker ter vtič (socket) in odstranite datoteko vtiča:
sudo systemctl stop docker.service docker.socket sudo systemctl disable docker.service docker.socket sudo rm -f /var/run/docker.sock
Preverite, ali ima vaš uporabnik nastavljena subuid in subgid (običajno se nastavita samodejno):
cat /etc/subuid cat /etc/subgid
Za svojega uporabnika omogočite lingering, da se lahko demon zažene ob zagonu sistema:
sudo loginctl enable-linger $USER
6.2 Namestitev dodatnih paketov
Za Ubuntu/Debian:
sudo apt install docker-ce-rootless-extras uidmap dbus-user-session
Za AlmaLinux/RHEL (shadow-utils zagotavlja uidmap in je običajno že nameščen):
sudo yum install docker-ce-rootless-extras
6.3 Namestitev demona rootless
Namestitveno skripto zaženite iz polne prijavne seje ciljnega uporabnika (ne iz sudo su ali lupine SSH brez prijave). Če ste v kontekstu brez prijave, najprej izvozite zahtevane spremenljivke:
export XDG_RUNTIME_DIR=/run/user/$(id -u) export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus
Nato zaženite namestitveno skripto:
dockerd-rootless-setuptool.sh install
Prvi zagon namestitvene skripte takoj po omogočitvi lingeringa je lahko nestabilen. Če se demon ne zažene, preprosto znova zaženite namestitveno skripto.
6.4 Nastavitev okoljskih spremenljivk
Naslednje spremenljivke dodajte v konfiguracijsko datoteko lupine (npr. ~/.bashrc):
export PATH=/usr/bin:$PATH export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
Datoteko naložite (source) ali znova zaženite lupino, da se spremembe uveljavijo.
6.5 Omejitve načina rootless
- Ni mogoče objavljati vrat < 1024 (Docker ponuja obvoze, kot so
setcap, posredovanje vratslirp4netnsali usmerjanje). - Ni podpore za
--net=host. - Način Swarm in omrežja overlay niso podprti.
- AppArmor ni podprt.
- Stikalo
--privilegedne podeli dostopa root na ravni gostitelja. - Podatki so shranjeni v
~/.local/share/docker(upoštevajte to pri varnostnih kopijah in kvotah). - Zahteva cgroup v2.
- Uporablja gonilnik za shranjevanje
overlayfsnamestooverlay2.
Povrnitev sprememb (rollback)
Če morate razveljaviti namestitev Dockerja v Linuxu - bodisi standardno bodisi z načinom rootless - sledite spodnjim korakom po vrstnem redu.
1. Povrnitev načina rootless (preskočite, če ni bil nastavljen):
Če ste nastavili način rootless, najprej razveljavite te spremembe, šele nato odstranite pakete:
dockerd-rootless-setuptool.sh uninstall rm -rf ~/.local/share/docker sudo loginctl disable-linger $USER
Odstranitev načina rootless po čiščenju paketov (purge) ne bo uspela, ker je namestitvena skripta del paketa docker-ce-rootless-extras. Način rootless vedno odstranite, dokler so paketi še prisotni.
2. Odstranitev paketov:
Debian/Ubuntu:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/apt/sources.list.d/docker.list /etc/apt/keyrings/docker.gpg
AlmaLinux/Rocky/RHEL:
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/yum.repos.d/docker-ce.repo
3. Odstranitev skupine:
sudo groupdel docker || true
Z odstranitvijo paketov se slike, vsebniki, nosilci (volumes) in prilagojene konfiguracijske datoteke ne odstranijo samodejno. Ukazi rm -rf te podatkovne mape trajno izbrišejo.
Zaključek
Vaša namestitev Dockerja v Linuxu je končana in preverjena. Osnova je zdaj varno vzpostavljena. Lahko nadaljujete z uvedbo vsebnikov za svoja samostojno gostovana orodja in ohranite popoln nadzor nad datotekami Nextcloud, trezorji Bitwarden in komunikacijo Matrix.
Različica dokumenta: 1.0
Zadnja posodobitev: maj 2026
Lastnik: Ekipa za tehnično dokumentacijo