# Vodnik po Dockerju za začetnike

V našem Dockerjevem vodiču vam predstavljamo virtualizacijsko platformo Docker in vam s preprostimi navodili pokažemo, kako uporabljati Docker v sistemu Ubuntu 22.04.

## Zgradba in značilnosti Dockerja

»Izdelajte, objavite in izvajajte katero koli aplikacijo, kjer koli« – to je moto podjetja Docker. Ta odprtokodna platforma za kontejnerje ponuja prilagodljivo in energetsko učinkovito alternativo za emulacijo strojne opreme na podlagi virtualnih strojev (VM).

Medtem ko **tradicionalna virtualizacija strojne opreme** temelji na zagonu več gostujočih sistemov na skupnem gostiteljskem sistemu, se aplikacije Docker izvajajo kot ločeni procesi na istem sistemu s pomočjo **kontejnerjev**. To se imenuje virtualizacija na podlagi kontejnerjev, znana tudi kot **virtualizacija na ravni operacijskega sistema**.

[![Image: Virtual machines and software containers in comparison](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/f/9/csm_virtual-machines-compared-to-docker-containers_1216df397f.webp "Virtual machines and software containers in comparison")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Schaubilder/virtual-machines-compared-to-docker-containers.png) While each virtual machine launches its own operating system, Docker containers share the core of the host system Ena od glavnih prednosti virtualizacije na podlagi kontejnerjev je, da lahko aplikacije z različnimi zahtevami delujejo ločeno druga od druge, ne da bi bilo za to potrebno vzdrževati ločen gostujoči sistem. Poleg tega je s kontejnerji mogoče aplikacije razporediti **na različnih platformah in v različnih infrastrukturah**, ne da bi se morale prilagajati strojnim ali programskim konfiguracijam gostiteljskega sistema.

Docker je najbolj priljubljen programski projekt, ki uporabnikom ponuja **tehnologijo virtualizacije na podlagi kontejnerjev**. Ta odprtokodna platforma temelji na treh osnovnih komponentah. Za zagon kontejnerjev uporabniki potrebujejo le **Dockerjev motor** ter posebne **Dockerjeve slike**, ki jih lahko pridobijo prek **Docker Hub** ali ustvarijo sami.

Tip Dockerjevi kontejnerji in slike so večinoma splošni, vendar jih je mogoče po potrebi v veliki meri prilagoditi. Več o tem si lahko preberete v našem članku o Dockerjevih kontejnerjih.

### Dockerjeve slike

Podobno kot virtualni stroji tudi Docker-kontejnerji temeljijo na Docker-slikah. Slika je predloga, ki je samo za branje in vsebuje vsa navodila, ki jih Docker-motor potrebuje za ustvarjanje kontejnerja. Docker-slika je opisana kot **prenosljiva slika kontejnerja** v obliki besedilne datoteke, imenovane tudi Dockerfile. Če je treba kontejner zagnati v sistemu, se najprej naloži paket z ustrezno sliko, če ta lokalno še ne obstaja. Naložena slika zagotavlja potrebni **datotečni sistem, vključno z vsemi parametri** za izvajanje. Kontejner lahko obravnavamo kot tekoči proces slike.

### Docker Hub

Docker Hub je spletni **register za repozitorije programske opreme**, nekakšna knjižnica za Docker slike. Spletna storitev je razdeljena na javni in zasebni del. Javni del uporabnikom omogoča, da naložijo svoje lastne slike in jih delijo s skupnostjo. Tu je na voljo vrsta uradnih slik, ki jih je pripravila razvojna ekipa Dockerja ter uveljavljeni odprtokodni projekti. Podobe, naložene v zasebni del registra, niso javno dostopne, zato jih je mogoče deliti na primer znotraj notranjega kroga podjetja ali s prijatelji in znanci. Do Docker Hub je mogoče dostopati na [*hub.docker.com*](https://hub.docker.com/ "Docker Hub website").

### Dockerjev motor

Srce projekta Docker predstavlja Docker Engine. Gre za **odprtokodno aplikacijo tipa odjemalec-strežnik**, ki je v trenutni različici na voljo vsem uporabnikom na vseh uveljavljenih platformah.

Osnovna arhitektura Dockerjevega motorja je razdeljena na tri komponente: **demon** s strežniškimi funkcijami, **programski vmesnik (API)**, ki temelji na programskem paradigmu REST (Representational State Transfer), ter **terminal operacijskega sistema** (vmesnik ukazne vrstice, CLI) kot uporabniški vmesnik (odjemalec).

- **Dockerjev demon**: Kot strežnik za Dockerjev motor se uporablja proces demon. Dockerjev demon teče v ozadju gostiteljskega sistema in se uporablja za centralno upravljanje Dockerjevega motorja. Ta funkcija ustvarja in upravlja vse slike, kontejnerje ali omrežja.
- **REST-API**: REST-API določa niz vmesnikov, ki drugim programom omogočajo komunikacijo z Docker daemonom in mu dajejo navodila. Eden od teh programov je terminal operacijskega sistema.
- **Terminal**: Docker kot odjemalski program uporablja terminal operacijskega sistema. Ta, integriran z Dockerjevim demonom prek REST-API, omogoča uporabnikom, da ga nadzorujejo prek skriptov ali uporabniških vnosov.

Tip Leta 2017 je bil Docker Engine preimenovan v *Docker Community Edition* (skrajšano Docker CE), vendar se v uradni dokumentaciji in Dockerjevih repozitorijih večinoma še vedno uporablja staro ime. Poleg Docker CE obstaja tudi *Docker Enterprise Edition* (Docker EE), ki ponuja nekatere dodatne funkcije. Vendar pa ta različica ni brezplačna in je bolj primerna za podjetja.

Z ukazi Dockerja je mogoče uporabniške programske kontejnerje zagnati, ustaviti in upravljati neposredno iz terminala. Na demon se dostopa prek ukaza `docker` in ukazov, kot so `build`, `pull` ali `run`. Odjemalec in strežnik lahko delujeta na istem sistemu. Uporabniki imajo tudi možnost dostopa do Docker daemona na drugem sistemu. Odvisno od vrste vzpostavljene povezave poteka komunikacija med odjemalcem in strežnikom prek REST-API, prek UNIX vtičnic ali prek omrežnega vmesnika.

Naslednja slika prikazuje **medsebojno delovanje posameznih komponent Dockerja** na primeru ukazov `docker build`, `docker pull` in `docker run`:

[![Image: Schematic representation of the Docker architecture](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/e/1/csm_docker-architecture-schematic_0cb6890f75.webp "Schematic representation of the Docker architecture")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Schaubilder/docker-architecture-schematic.png) 'The Docker architecture is based on the cooperation of the client (terminal'), strežnik (Dockerjev demon) in register (Docker Hub).“ Ukaz `docker build` da Dockerjevemu demonu navodilo, naj ustvari sliko (črtkana črta). Za to mora biti na voljo ustrezen **Dockerfile**. Če slike ne želimo ustvariti, ampak jo namesto tega naložiti iz repozitorija v Docker Hubu, se uporabi ukaz `docker pull` (prekinjena črta). Če se demon Docker prek `docker run` naroči, naj zažene kontejner, program v ozadju preveri, ali je ustrezna slika kontejnerja na voljo lokalno. Če je, se kontejner zažene (neprekinjena črta). Če demon slike ne najde, samodejno sproži prenos iz repozitorija.

## Delo z Dockerjem

Zdaj je čas, da se seznanite z **aplikacijami na platformi za kontejnerje**. Če še niste namestili Dockerjevega motorja, lahko to storite prek terminala v sistemu Linux. Navodila za to najdete v našem članku z naslovom»Namestitev Dockerja v Ubuntu 22.04«. V nadaljevanju boste izvedeli, kako upravljati Dockerjev motor iz terminala, kaj vam lahko ponudi Docker Hub in zakaj bi Dockerjevi kontejnerji lahko korenito spremenili vaš način dela z aplikacijami.

Tip Če želite namestiti Docker na drugo distribucijo Linuxa ali na Windows, vam bodo v pomoč naslednja navodila:

- Namestitev Dockerja na Debian 11
- Namestitev Dockerja na Ubuntu 20.04
- Namestitev Dockerja na CentOS 7
- Namestitev Dockerja na Windows 10
- Namestitev Dockerja na Windows 11
- Namestitev Dockerja na Raspberry Pi

### Kako upravljati Dockerjev motor

Od različice 16.04 Ubuntu za upravljanje procesov uporablja **program v ozadju *systemd***(kratica za »system daemon«).*Systemd je*proces init, ki se uporablja tudi v drugih distribucijah Linuxa, kot so RHEL, CentOS ali Fedora. Običajno*dobi systemd*identifikacijsko številko procesa 1. Kot prvi proces v sistemu je ta demon odgovoren za zagon, nadzor in zaključek vseh naslednjih procesov. V prejšnjih različicah Ubunta (14.10 in starejših) to funkcijo prevzame*program *v ozadju* upstart*.

Dockerjev demon je mogoče upravljati tudi prek *systemd*. Pri standardni namestitvi je platforma za kontejnerje nastavljena tako, da se demon samodejno zažene ob zagonu sistema. To privzeto nastavitev je mogoče prilagoditi z orodjem za ukazno vrstico **systemctl**.

Z *ukazom `systemctl`* pošiljate ukaze sistemu *`systemd`*, da nadzirate proces ali pridobite podatke o njegovem stanju. Sintaksa takšnega ukaza je naslednja:

```bash
systemctl [OPTION] [COMMAND]
```

Nekateri ukazi se nanašajo na določene vire (na primer Docker). V terminologiji *systemd* se ti imenujejo enote. V tem primeru je ukaz sestavljen iz ustreznega navodila in imena enote, na katero se nanaša.

Če želite vklopiti **samodejni zagon demon Dockerja** (*vklopiti*) ali ga izklopiti (*izklopiti*), uporabite orodje za ukazno vrstico *systemctl* z naslednjimi ukazi:

```bash
sudo systemctl enable docker
sudo systemctl disable docker
```

Orodje za ukazno vrstico *systemctl* omogoča preverjanje **stanja enote**:

```bash
sudo systemctl status docker
```

Če je Dockerjev motor na vašem sistemu Ubuntu aktiven, naj bi izpis v terminalu izgledal kot na naslednji sliki:

[![Image: The status query via systemctl shows: The Docker engine is active (running)](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/f/7/csm_docker-status-active-running_f52601bd11.webp "The status query via systemctl shows: The Docker engine is active (running)")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-status-active-running.png) Status query via systemctl: The Docker Engine is active (running) Če je vaš Docker-motor trenutno izklopljen, boste prejeli statusno sporočilo *»inactive (dead)«*. V tem primeru morate za zagon kontejnerjev ročno zagnati Docker-demona.

[![Image: The status query via systemctl shows: The Docker engine is inactive (dead)](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/d/a/csm_docker-status-inactive_cad5668ee9.webp "The status query via systemctl shows: The Docker engine is inactive (dead)")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-status-inactive.png) Status query via systemctl: The Docker engine is inactive (dead) Če želite **ročno zagnati, ustaviti ali ponovno zagnati Dockerjev motor**, uporabite eno od naslednjih ukazov za *sistem systemd*.

Če želite **zagnati onemogočenega demon**, uporabite *systemctl* v kombinaciji z ukazom `start`:

```bash
sudo systemctl start docker
```

Če **želite ustaviti Dockerjev demon**, uporabite ukaz `stop`:

```bash
sudo systemctl stop docker
```

Z ukazom `restart` se sproži ponovni **zagon motorja**:

```bash
sudo systemctl restart docker
```

### Kako uporabljati Docker Hub

Če je Docker Engine srce platforme za kontejnerje, je Docker Hub duša tega odprtokodnega projekta. Tu se zbira skupnost. V **registru v oblaku** lahko uporabniki najdejo vse, kar potrebujejo, da svojo namestitev Dockerja napolnijo z življenjem.

Spletna storitev ponuja **različne uradne repozitorije z več kot 100.000 brezplačnimi aplikacijami**. Uporabniki imajo možnost ustvariti arhiv slik in jih skupaj uporabljati z delovnimi skupinami. Poleg strokovne podpore, ki jo nudi razvojna ekipa, lahko začetniki tukaj najdejo povezave do uporabniške skupnosti. Na [**GitHubu**](https://github.com/docker/hub-feedback/issues "Docker’s GitHub website") je na voljo forum za podporo skupnosti.

[![Image: The Docker hub: Registration](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/a/0/csm_docker-hub-login-page_d232488fe7.webp "The Docker hub: Registration")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-login-page.png) Create your personal Docker ID for free by registering / Source: hub.docker.com #### Registracija v Docker Hubu

**Registracija v Docker Hubu je brezplačna**. Uporabniki potrebujejo le e-poštni naslov in izbrano Docker ID. To kasneje služi kot osebni **imenski prostor repozitorija** in uporabnikom omogoča dostop do vseh storitev Docker. Trenutno ta ponudba poleg Docker Hub vključuje tudi Docker Cloud, Docker Store in izbrane beta programe. Omogoča tudi uporabo **Docker ID** za prijavo v center za podporo Docker, portal Docker Success in [forum Docker](https://www.docker.com/community/ "Docker Community forum").

Postopek registracije obsega pet korakov:

1. **Izberite svoj Docker ID**: V prvem delu prijave izberite uporabniško ime, ki ga boste kasneje uporabljali kot svoj osebni Docker ID.
2. **Vnesite e-poštni naslov**: Vnesite svoj trenutni e-poštni naslov. Upoštevajte, da boste morali svojo registracijo pri Docker Hubu potrditi prek e-pošte.
3. **Izberite geslo**: Izberite skrivno geslo.
4. **Potrdite registracijo**: Kliknite na »Prijavi se«, da potrdite registracijo. Ko bodo podatki v celoti preneseni, vam bo Docker na navedeni e-poštni naslov poslal povezavo za potrditev e-poštnega naslova.
5. **Potrdite svoj e-poštni naslov**: Potrdite svoj e-poštni naslov s klikom na povezavo za potrditev.

Spletne storitve projekta Docker so na voljo takoj po registraciji v brskalniku. Tukaj lahko ustvarjate repozitorije in delovne skupine ali pa z uporabo funkcije »Explore« iščete javne vire v Docker Hubu.

[![Image: Dashboard of the Docker hub](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/f/a/csm_docker-hub-dashboard_1d08a8d15d.webp "Dashboard of the Docker hub")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-dashboard.png) Select and set repositories and workgroups via the Docker hub dashboard / Source: hub.docker.com Prijavite se lahko tudi neposredno v terminalu operacijskega sistema z ukazom *`docker login`*. Podroben opis ukaza najdete v [dokumentaciji Dockerja](https://docs.docker.com/engine/reference/commandline/login/ "Docker documentation").

Načeloma je Docker Hub na voljo tudi tistim, **ki nimajo računa ali Docker ID-ja**. V tem primeru pa je mogoče naložiti le slike iz javnih repozitorijev. Brez Docker ID-ja ni mogoče naložiti (*push*) lastnih slik.

#### Ustvarite repozitorije v Docker Hubu

**Brezplačen račun na Docker Hubu** vključuje eno zasebno repozitorij in omogoča ustvarjanje poljubnega števila javnih repozitorijev. Če potrebujete več zasebnih repozitorijev, jih lahko odklenete s **plačljivo nadgradnjo**.

Če želite ustvariti repozitorij, ravnajte na naslednji način:

1. **Izberite imenski prostor**: Novo ustvarjena skladišča se samodejno dodelijo v imenski prostor vašega Docker ID-ja. Imate tudi možnost vnesti ID organizacije, ki ji pripadate.
2. **Označite repozitorij**: Vnesite ime za novo ustvarjeni repozitorij.
3. **Dodajte opis**: Dodajte kratek opis za vaše repozitorij.
4. **Nastavite vidnost**: Odločite se, ali naj bo repozitorij javno viden (*javni*) ali dostopen samo vam ali vaši organizaciji (*zasebni*).

Potrdite vnesene podatke s klikom na gumb »Ustvari«.

[![Image: The Docker hub: Input screen for creating a repository](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/a/d/csm_docker-hub-repository-creation_ac7984ce9d.webp "The Docker hub: Input screen for creating a repository")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-repository-creation.png) Your repositories are automatically created in the namespace of your Docker ID / Source: hub.docker.com #### Ustvarjanje ekip in organizacij

Z Docker Hubom Docker ponuja platformo v oblaku, na kateri **se samostojno ustvarjene slike centralno upravljajo** in enostavno **delijo z delovnimi skupinami**. V Dockerjevi terminologiji se te imenujejo organizacije. Podobno kot uporabniški računi tudi organizacije prejmejo individualne identifikacijske številke, prek katerih je mogoče slike ponujati in prenesti. Pravice in vloge znotraj organizacije se lahko dodelijo prek skupin. Na primer, uporabniki, dodeljeni v skupino »Lastniki«, imajo pooblastila za ustvarjanje zasebnih ali javnih repozitorijev ter dodeljevanje dostopnih pravic.

Delovne skupine je mogoče ustvarjati in upravljati tudi neposredno prek nadzorne plošče. Več informacij o organizacijah in ekipah najdete v [dokumentaciji Dockerja](https://docs.docker.com/docker-hub/orgs/ "Workgroups - Docker documentation").

### Delovanje s slikami in kontejnerji

Docker Hub je kot prva točka za dostop do uradnih virov Dockerja naša izhodiščna točka za ta **uvod v ravnanje s slikami in kontejnerji**. Razvojna ekipa je pripravila demonstracijsko sliko *»whalesay«*, ki bo služila kot podlaga za naslednji Dockerjev vodič.

#### Prenesi slike Dockerja

Sliko *»whalesay«* najdete tako, da obiščete spletno stran Docker Hub in v iskalno polje ob logotipu Docker vnesete izraz *»whalesay* «.

[![Image: The search function in Docker hub](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/c/c/csm_docker-hub-whalesay-repos_eae5c60dab.webp "The search function in Docker hub")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-whalesay-repos.png) Search the Docker hub using the search bar or the ‘Explore’ button / Source: hub.docker.com V rezultatih iskanja kliknite na vir z naslovom *docker/whalesay*, da odprete javno repozitorij za to sliko.

Repozitoriji Dockerja so vedno sestavljeni po istem vzorcu. V glavi strani so navedeni naslov slike, kategorija repozitorija in čas zadnjega prenosa (*last pushed*).

[![Image: Web view of a Docker repository](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/3/e/csm_docker-hub-official-whalesay-repo_2355257104.webp "Web view of a Docker repository")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-official-whalesay-repo.png) In the repository, users generally find all information that is needed to use an image / Source: hub.docker.com Vsako Dockerjevo skladišče ponuja tudi naslednja informacijska okna:

1. **Opis**: Podroben opis, ki običajno vključuje navodila za uporabo
2. **Ukaz Docker pull**: Direktiva ukazne vrstice, ki se uporablja za prenos slike iz repozitorija (`pull`)
3. **Lastnik**: Informacije o ustvarjalcu repozitorija
4. **Komentarji**: Oddelek za komentarje na koncu strani

Iz opisnih polj v repozitoriju je razvidno, da je *program »whalesay«* predelava odprtokodnega Perl skripta ***»cowsay***«. Program, ki ga je leta 1999 razvil Tony Monroe, ustvari ASCII-grafiko v obliki krave, ki se skupaj s sporočilom prikaže na uporabnikovem terminalu.

Če želite prenesti *docker/whalesay*, uporabite ukaz `docker pull`:

```bash
docker pull [OPTIONS] NAME [:TAG|@DIGEST]
```

Ukaz `docker pull` daemonu naroči, naj naloži sliko iz repozitorija. Katero sliko želite, določite z vnosom naslova slike (*NAME*). Dockerju lahko tudi navedete, kako naj izvede želeni ukaz (*OPTIONS*). Med neobvezne vnose spadajo **oznake** (*:TAG*) in posamezne **identifikacijske številke** (*@DIGEST*), ki vam omogočajo prenos določene različice slike.

Lokalno kopijo slike *docker/whalesay* pridobimo z naslednjim ukazom:

```bash
docker pull docker/whalesay
```

Na splošno lahko ta korak preskočite. Če želite zagnati kontejner, bo Dockerjev demon samodejno prenesel slike iz repozitorija, ki jih ne najde v lokalnem sistemu.

#### Zaženi slike Dockerja kot kontejnerje

Za zagon slike Dockerja uporabite ukaz `docker run`:

```bash
docker run [OPTIONS] IMAGE [:TAG|@DIGEST] [CMD] [ARG...]
```

Edini obvezni del ukaza `docker run` je ime želene slike Dockerja. Ko pa zaženete kontejner, imate možnost določiti tudi dodatne možnosti, oznake (TAGs) in povzetke (DIGESTs). Poleg tega se ukaz `docker run` lahko kombinira z drugimi ukazi, ki se izvedejo takoj ob zagonu kontejnerja. V tem primeru se **CMD** (COMMAND, ki ga določi ustvarjalec slike in se samodejno izvede ob zagonu kontejnerja) prepiše. Druge neobvezne konfiguracije se lahko določijo z **dodatnimi argumenti** (*ARG…*). To omogoča na primer dodajanje uporabnikov ali prenos spremenljivk okolja.

Uporabi ukazno vrstico

```bash
docker run docker/whalesay cowsay boo
```

da prenesete obstoječi Perl skript kot sliko in ga zaženete v kontejnerju. Opazili boste, da se *whalesay* precej razlikuje od izvirnega skripta.

[![Image: Terminal output of the container docker/whalesay: The whale says ‘boo’](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/e/4/csm_docker-run-whalesay-boo-english_82f28f20b7.webp "Terminal output of the container docker/whalesay: The whale says ‘boo’")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-run-whalesay-boo-english.png) If docker/whalesay is run with the standard command, the Docker whale is limited to a short ‘boo’ Če se zažene slika *docker/whalesay*, skript izpiše ASCII-grafiko v obliki kita ter besedilno sporočilo »boo«, ki je bilo posredovano z ukazom *cowsay* v terminalu.

Tako kot pri preskusu demon najprej poišče želeno sliko v lokalnem imeniku. Ker paket z enakim imenom ne obstaja, se sproži prenos iz Dockerjevega repozitorija. Nato demon zažene spremenjeni program *cowsay*. Če se ta uspešno izvede, **se kontejner samodejno zaključi**.

Podobno kot *cowsay* tudi Dockerjev *whalesay* omogoča poseg v potek programa, da bi vplivali na izpis besedila v terminalu. To funkcijo preizkusite tako, da v izpisnem ukazu besedo »boo« nadomestite s katerim koli nizom znakov ali pa na primer z neumnim šalom o kitih.

```bash
sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?
```

[![Image: Terminal output of the container docker/whalesay: A whale with an individual message](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/8/6/csm_docker-run-whalesay-joke_6337d3f36a.webp "Terminal output of the container docker/whalesay: A whale with an individual message")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-run-whalesay-joke.png) Make your Docker whale say whatever you want by placing words in his speech bubble #### Prikaži vse slike Dockerja v lokalnem sistemu

Če niste prepričani, ali ste določeno sliko že prenesli, si lahko ogledate **pregled vseh slik na svojem lokalnem računalniku**. Uporabite naslednjo ukazno vrstico:

```bash
sudo docker image
```

Ukaz `docker images` (ali `docker image ls`) prikaže vse lokalne slike, vključno z velikostjo datoteke, oznako in ID slike.

[![Image: Overview of all images on the local system](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/3/9/csm_sudo-docker-images-empty_9806635619.webp "Overview of all images on the local system")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-images-empty.png) The overview displays the images hello-world and docker/whalesay Če zaženete kontejner, se izvorna slika prenese iz repozitorija kot kopija in trajno shrani na vaš računalnik. Tako prihranite čas, če želite do slike dostopati kasneje. Novo prenašanje se sproži le, če se vir slike spremeni, na primer če je v repozitoriju na voljo nova različica.

#### Prikaži vse kontejnerje v lokalnem sistemu

Če želite prikazati **pregled vseh kontejnerjev,** ki trenutno tečejo v vašem sistemu ali so v preteklosti že tekli, uporabite ukazno vrstico `docker ps` v kombinaciji z možnostjo `--all` (skrajšano: `-a`):

```bash
sudo docker ps -a
```

[![Image: Overview of all containers on the local system](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/5/a/csm_sudo-docker-ps-a-english_74f680383e.webp "Overview of all containers on the local system")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-ps-a-english.png) The overview shows all containers that have been launched on the Docker engine Izpis v terminalu vsebuje podatke, kot so **ID** posameznega **kontejnerja**, izhodiščna **slika**, **ukaz**, ki je bil izveden ob zagonu kontejnerja, **čas** zagona kontejnerja in **stanje**.

Če želite prikazati le kontejnerje, ki trenutno tečejo v vašem sistemu, uporabite ukazno vrstico `docker ps` brez drugih opcij:

```bash
sudo docker ps
```

Trenutno pa v vašem sistemu ne bi smelo biti nobenih zagnanih kontejnerjev.

#### Ustvarjanje slik Dockerja

V našem Dockerjevem vodiču smo vam sicer že pokazali, kako poiskati slike v Docker Hubu, jih prenesti in zagnati na katerem koli sistemu, na katerem je nameščen Dockerjev motor. Vendar pa vam Docker ne omogoča le dostopa do obsežne ponudbe aplikacij, ki so na voljo v registru. Platforma ponuja tudi številne možnosti za **ustvarjanje lastnih slik** in njihovo deljenje z drugimi razvijalci.

V uvodnih poglavjih tega Dockerjevega vodiča ste že izvedeli, da vsaka Dockerjeva slika temelji na datoteki **Dockerfile**. Datoteke Dockerfile si lahko predstavljate kot nekakšne **predloge za izdelavo slik**. To so preproste besedilne datoteke, ki vsebujejo vsa navodila, ki jih Docker potrebuje za ustvarjanje slike. V naslednjih korakih se boste naučili, kako napisati takšno datoteko Dockerfile in Dockerju naročiti, naj jo uporabi kot osnovo za vašo lastno sliko.

1. **Ustvarjanje novega imenika**: Razvojna ekipa Dockerja priporoča, da za vsak Dockerfile ustvarite nov imenik. V sistemu Linux imenike enostavno ustvarite v terminalu. Z naslednjim ukazom v ukazni vrstici ustvarite imenik z imenom *mydockerbuild*:

```bash
mkdir mydockerbuild
```

[![Image: Ubuntu terminal: The command mkdir](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/4/8/csm_mkdir-mydockerbuild-english_b8f27a8820.webp "Ubuntu terminal: The command mkdir")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/mkdir-mydockerbuild-english.png) Create new directories with the command mkdir 2. **Premikanje po novem imeniku**: Uporabite ukaz `cd` za premikanje po novo ustvarjenem delovnem imeniku.

```bash
cd mydockerbuild
```

[![Image: Ubuntu terminal: The command cd](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/6/d/csm_cd-mydockerbuild-english_93ecadd291.webp "Ubuntu terminal: The command cd")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/cd-mydockerbuild-english.png) With the help of the cd command, switch to another working directory 3. **Ustvarjanje nove besedilne datoteke**: V sistemu Ubuntu lahko besedilne datoteke enostavno ustvarite tudi prek terminala. Za to uporabite urejevalnik, kot je Nano ali Vim. V imeniku *mydockerbuild* ustvarite besedilno datoteko z imenom *Dockerfile*.

```bash
nano Dockerfile
```

[![Image: Ubuntu terminal: Create text files with Nano](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/2/4/csm_nano-dockerfile-empty_b2b1b6195b.webp "Ubuntu terminal: Create text files with Nano")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/nano-dockerfile-empty.png) The text editor Nano is preinstalled on all Ubuntu versions 4. **Napišite datoteko Dockerfile**: Novo ustvarjena besedilna datoteka služi kot načrt za izdelavo vaše lastne slike. Namesto da bi sliko programirali od začetka, bomo v tem Dockerjevem vodiču kot predlogo uporabili demonstracijsko sliko *docker/whalesay*. To vključite z ukazom *FROM* v datoteki Dockerfile. Uporabite oznako *:latest*, da se sklicujete na najnovejšo različico slike.

```none
FROM docker/whalesay:latest
```

Doslej je *program docker/whalesay* deloval tako, da ste mu sami vnesli besedilo. V terminalu se je prikazalo točno tisto besedilo, ki ste ga vnesli, skupaj z ukazom za zagon kontejnerja. A bilo bi bolj zanimivo, če bi skript **samodejno** ustvarjal novo besedilo. To je mogoče doseči na primer z uporabo programa *fortunes*, ki je na voljo v vsakem sistemu Linux. Osnovna funkcija programa *fortunes* je ustvarjanje izrekov iz piškotkov sreče in duhovitih aforizmov. Uporabite naslednji ukaz, da posodobite trenutni lokalni indeks paketov in namestite *program fortunes*:

```none
RUN apt-get -y update && apt-get install -y fortunes
```

Nato opredelite ukaz *CMD*. Ta se izvede po ukazu *RUN*, razen če ga ni prepisal klic (`docker run image CMD`). Z naslednjim ukazom zaženite program *fortunes* z možnostjo `-a` („Izberi iz vseh zbirk podatkov“) in izpis prikažite v terminalu prek programa *cowsay*:

```none
CMD /usr/games/fortune -a | cowsay
```

Vaša datoteka Dockerfile naj bi bila takšna:

```none
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
```

Opomba: **Ukazi** v datoteki Dockerfile so **vedno zapisani z enim razmikom** in se vedno začnejo s ključno besedo. Sintaksa ne razlikuje med velikimi in malimi črkami, zato ni pomembno, ali pišete z velikimi ali malimi črkami. Vendar pa je bila uvedena enotna uporaba velikih črk za ključne besede.

[![Image: The text editor Nano in the Ubuntu terminal](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/b/b/csm_nano-dockerfile-full_bd1796f06d.webp "The text editor Nano in the Ubuntu terminal")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/nano-dockerfile-full.png) Control the text editor Nano via the key combinations given in the footer 1. **Shranite besedilno datoteko**: Shranite svoj vnos. Če uporabljate urejevalnik Nano, datoteko shranite s kombinacijo tipk \[CTRL\] + \[O\] in potrdite s tipko \[ENTER\]. Nano vas bo obvestil, da so bile v izbrano datoteko zapisane tri vrstice. Urejevalnik zaprite s kombinacijo tipk \[CTRL\] + \[X\].
2. **Ustvarjanje slike kot Dockerfile**: Če želite ustvariti sliko iz Dockerfile, se najprej pomaknite v imenik, kjer se nahaja besedilna datoteka. Ustvarjanje slike začnite z ukazno vrstico `docker build`. Če želite sliko poimenovati po lastni izbiri ali ji dodeliti oznako, uporabite možnost `-t`, ki ji sledi želena kombinacija imena in oznake. Standardni format je `name:tag`.

V tem primeru je treba ustvariti sliko z imenom *docker-whale*:

```bash
docker build -t docker-whale .
```

Zadnji **del besedila** pomeni, da se izhodiščna datoteka Dockerfile nahaja v izbrani mapi. Imate tudi možnost, da za izvorne datoteke določite pot do datoteke ali URL-naslov.

Postopek *gradnje* se začne takoj, ko potrdite ukaz s tipko \[ENTER\]. Najprej Dockerjev demon preveri, ali ima vse datoteke, ki jih potrebuje za ustvarjanje slike. V Dockerjevi terminologiji se to imenuje »kontekst«.

Nato poiščemo sliko *docker/whalesay* z oznako *:latest*:

Če je potrebno okolje za ustvarjanje slike že v celoti pripravljeno, demon Docker v začasnem kontejnerju zažene sliko, ki je bila dodana prek *ukaza FROM*, in preide na naslednji ukaz v datoteki *Dockerfile*. V tem primeru je to ukaz *RUN*, ki poskrbi za namestitev programa *fortunes*.

Na koncu vsakega koraka pri ustvarjanju slike vam Docker dodeli **identifikacijsko številko za ustrezno plast, ki** je bila ustvarjena v tem koraku. To pomeni, da vsaka vrstica v ustreznem datoteki Dockerfile ustreza plasti slike, ki je bila na tej podlagi zgrajena.

Ko se ukaz *RUN* zaključi, Dockerjev demon ustavi kontejner, ki je bil ustvarjen zanj, ga odstrani in za sloj iz ukaza CMD zažene nov začasni kontejner. Ob koncu postopka ustvarjanja se tudi ta začasni kontejner ustavi in odstrani. Docker vam prikaže ID nove slike:

```none
Successfully built a8f2048c9ab8
```

[![Image: Ubuntu terminal: Status message during image creation](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/f/6/csm_sudo-docker-build-whale-english_d6b1eb3cf7.webp "Ubuntu terminal: Status message during image creation")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-build-whale-english.png) Docker images are created in multiple layers Novo ustvarjeno sliko najdete pod imenom *docker-whale* v pregledu lokalno shranjenih slik.

```bash
sudo docker images
```

[![Image: Ubuntu terminal: Overview of all images](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/3/9/csm_docker-images-new-docker-whale_4a46337253.webp "Ubuntu terminal: Overview of all images")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-images-new-docker-whale.png) The newly created image in the image overview Če želite zagnati kontejner iz novo ustvarjene slike, uporabite ukazno vrstico `sudo docker run` v kombinaciji z imenom slike:

```bash
sudo docker run docker-whale
```

Če je bila slika pravilno ustvarjena iz datoteke Dockerfile, naj bi vas vaš kit zdaj navdihoval z bolj ali manj modrimi besedami. Opomba: Vsakič, ko ponovno zaženete kontejner, se ustvari nov stavek.

[![Image: Container based on docker-whale: Text output in the terminal](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/1/1/csm_sudo-run-docker-whale-fortunes-english_3bfb9d5385.webp "Container based on docker-whale: Text output in the terminal")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-run-docker-whale-fortunes-english.png) Thanks to fortunes, the ASCII whale now provides witty or wise phrases  Tip Več podrobnosti o tem, kako ustvariti slike Dockerja, si lahko preberete v našem posebnem članku na to temo.

#### Označite slike Dockerja in jih naložite na Docker Hub

Če želite svojo lastno sliko *docker-whale* naložiti v hub in jo dati na voljo skupnosti ali delovni skupini, jo morate najprej povezati z repozitorijem z enakim imenom v svojem osebnem imenskem prostoru. V terminologiji Dockerja se ta korak imenuje **označevanje**.

Če želite objaviti sliko v Docker Hubu, ravnajte na naslednji način:

1. **Ustvarite repozitorij**: Prijavite se v Docker Hub z vašim Docker ID-jem in osebnim geslom ter ustvarite javni repozitorij z imenom *docker-whale*.

[![Image: The Docker hub: Entry form for creating a repository](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/3/3/csm_docker-hub-create-docker-whale-repo_1266f7d9ea.webp "The Docker hub: Entry form for creating a repository")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-create-docker-whale-repo.png) Create a repository for your custom image / Source: hub.docker.com 2. **Ugotovite ID slike**: Ugotovite ID vaše prilagojene slike *»docker-whale«* z uporabo ukazne vrstice `docker images`.

[![Image: Overview of all local images in the Ubuntu terminal](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/5/a/csm_sudo-docker-images-id-english_265f2f9d16.webp "Overview of all local images in the Ubuntu terminal")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-images-id-english.png) The command docker images lists all images that are saved on your system V našem primeru je ID slike *a8f2048c9ab8*. To potrebujemo za označevanje v naslednjem koraku.

3. **Označite sliko**: Označite sliko *»docker-whale«* s pomočjo programa za ukazno vrstico `docker tag` na naslednji način:

```bash
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]
```

V tem primeru se ukazna vrstica za označevanje glasi:

```bash
sudo docker tag a8f2048c9ab8 [Namespace]/docker-whale:latest
```

V pregledu `docker images` lahko preverite, ali ste sliko pravilno označili. Ime repozitorija naj bi zdaj vsebovalo vašo Docker ID.

[![Image: Ubuntu terminal: Image overview before and after tagging](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/6/e/csm_sudo-docker-tag-docker-whale-english_d2345804e2.webp "Ubuntu terminal: Image overview before and after tagging")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-tag-docker-whale-english.png) Link images with your Docker ID using the command docker tag 4. **Naložite sliko**: Da bi sliko naložili, se morate najprej prijaviti v Docker Hub. To lahko storite z ukazom `docker login`.

```bash
sudo docker login
```

Nato vas terminal pozove, da vnesete svoje uporabniško ime (Docker ID) in geslo.

[![Image: Log in to the Docker hub via the Ubuntu terminal](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/3/3/csm_sudo-docker-login-english_77fe04ede0.webp "Log in to the Docker hub via the Ubuntu terminal")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-login-english.png) Before you can upload an image to the Docker hub, you first need to log in Če se je prijava uspela, uporabite ukazno vrstico `docker push` za naložitev slike v novo ustvarjeno repozitorij.

```bash
sudo docker push [Namespace]/docker-whale
```

Nalaganje naj bi trajalo le nekaj sekund. Trenutno stanje je prikazano v terminalu.

[![Image: Ubuntu terminal: Status message of the image upload](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/c/a/csm_sudo-docker-push-whale-english_44b31ef5fd.webp "Ubuntu terminal: Status message of the image upload")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-push-whale-english.png) After uploading, the image is available under the set tag latest in the Docker hub Prijavite se v Docker Hub prek brskalnika, da si ogledate naloženo sliko.

[![Image: Docker hub: The repository [Namespace]/docker-whale in the detailed view](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/5/e/csm_docker-hub-push-result_56530d8ebc.webp "Docker hub: The repository [Namespace]/docker-whale in the detailed view")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-push-result.png) The latest update of your repository is shown in the detailed view / Source: hub.docker.com Če želite v posamezno repozitorij naložiti več kot eno sliko, uporabite različne oznake, da slike ponudite v različnih različicah. Na primer:

```none
[Namespace]/docker-whale:latest
[Namespace]/docker-whale:version1
[Namespace]/docker-whale:version2
```

Pregled različnih različic slike je na voljo v repozitoriju Docker Hub pod zavihkom »Oznake«.

[![Image: Docker hub: The ‘Tags’ tab](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/3/9/csm_docker-hub-multiple-versions-tags_e6c43a478d.webp "Docker hub: The ‘Tags’ tab")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-multiple-versions-tags.png) In the ‘Tags’ tab, you’ll find all versions of an image / Source: hub.docker.com Slike različnih projektov pa bi morale biti na voljo v ločenih repozitorijih.

Če je bilo nalaganje uspešno, bo vaša prilagojena slika zdaj na voljo v javnem repozitoriju vsem uporabnikom Dockerja po vsem svetu.

1. **Preizkus**: Preverite, ali je prenos uspel, tako da poskusite sliko prenesti.

Upoštevajte, da je treba najprej izbrisati lokalno različico slike, da lahko prenesete novo kopijo z istim oznako. V nasprotnem primeru bo Docker sporočil, da želeni sliki v trenutni različici že obstaja.

[![Image: The Image is up to date](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/f/0/csm_sudo-docker-pull-docker-whale-english_84e2e758c4.webp "The Image is up to date")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-pull-docker-whale-english.png) If an image exists locally, the pull command is cancelled Če želite izbrisati lokalno sliko Dockerja, uporabite ukazno vrstico `docker rmi` v kombinaciji z ustreznim ID-jem slike. Ta se, kot običajno, določi prek `docker images`. Če Docker zabeleži konflikt, npr. ker se ID slike uporablja v več repozitorijih ali v kontejnerju, ponovite ukaz z možnostjo `--force` (skrajšano\*-f\* ), da **prisilite izbris**.

```bash
sudo docker rmi -f a8f2048c9ab8
```

[![Image: Command docker rmi in combination with the option -f (force)](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/b/f/csm_sudo-docker-rmi-remove-image_75b679b119.webp "Command docker rmi in combination with the option -f (force)")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-rmi-remove-image.png) Use the command docker rmi in combination with the option -f to force a deletion Ponovno prikaži pregled vseh lokalnih slik:

```bash
sudo docker Images
```

Izbrisani elementi se v izpisu terminala ne bi smeli več prikazovati. Sedaj uporabite ukaz »pull«, ki je naveden v repozitoriju, da prenesete **novo kopijo slike** iz Docker Hub.

```bash
sudo docker pull [Namespace]/docker-whale
```

[![Image: Ubuntu terminal: Download from the Docker hub](https://www.ionos.com/sl-si/digitalguide/fileadmin/_processed_/4/8/csm_sudo-docker-pull-image-redownload_3dfb6af27f.webp "Ubuntu terminal: Download from the Docker hub")](https://www.ionos.com/sl-si/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-pull-image-redownload.png) The previously published image is successfully downloaded ## Dodatne teme in vodiči o Dockerju

Svet Dockerja je obsežen in sčasoma [se je iz Dockerjevih orodij razvil](https://www.ionos.com/sl-si/digitalguide/streznik/znanje/orodja-docker-ekosistem-platforme-za-kontejnerje/) živahen [ekosistem](https://www.ionos.com/sl-si/digitalguide/streznik/znanje/orodja-docker-ekosistem-platforme-za-kontejnerje/). Docker je še posebej koristen za skrbnike, predvsem če upravljajo zapletene aplikacije z več kontejnerji, ki delujejo vzporedno na različnih sistemih. Docker ponuja raznolike funkcije za **usklajevanje** takšnih grozdov. Več informacij o tem najdete v našem članku o usklajevanju Dockerja s Swarmom in Composeom.

Digitalni vodnik vsebuje **dodatna navodila** za delo z Dockerjem:

- Nastavitev repozitorija Docker
- Volumi kontejnerjev Docker
- Docker: Varnostno kopiranje in obnovitev
- Namestitev in zagon Dockerja na strežniku Linux
- Vodnik po Docker Compose

Docker je primeren za **različne scenarije uporabe**. V digitalnem vodniku najdete naslednje vodiče:

- [Namestitev WordPressa v Dockerjevih kontejnerjih](https://www.ionos.com/sl-si/digitalguide/streznik/znanje/wordpress-v-dockerjevih-kontejnerjih/)
- Zagon VPN v Docker kontejnerju z uporabo SoftEther
- Namestitev Nextclouda z Dockerjem
- Namestitev Portainerja v Dockerju
- Redis v Docker kontejnerjih
- Valheim Docker strežnik

Docker ni vedno najboljša izbira za vsako aplikacijo. V enem od naših člankov smo predstavili najbolj priljubljene [alternative za Docker](https://www.ionos.com/sl-si/digitalguide/streznik/znanje/pregled-nadomestnih-resitev-za-docker/). Poleg tega imamo na voljo še številne druge članke, v katerih primerjamo Docker z drugimi platformami:

- Kubernetes proti Dockerju
- Openshift proti Dockerju
- Podman proti Dockerju


This is a markdown version of: [https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/vodnik-po-dockerju-namestitev-in-prvi-koraki/](https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/vodnik-po-dockerju-namestitev-in-prvi-koraki/) for AI/LLM consumption.