Using Jib to build Docker Images - Take5
Sadržaj:
Slika Dockera je nacrt Docker spremnika koji sadrži aplikaciju i sve što je potrebno za pokretanje aplikacije. Spremnik je vrijeme izvođenja slike.
U ovom tutorialu objasnit ćemo što je Dockerfile, kako ga stvoriti i kako napraviti Docker sliku s Dockerfileom.
Što je Dockerfile
Dockerfile je tekstualna datoteka koja sadrži sve naredbe koje bi korisnik mogao pokrenuti u naredbenom retku za stvaranje slike. Sadrži sve upute potrebne Dockeru za izradu slike.
Slike dockera sastoje se od niza slojeva datotečnog sustava koji predstavljaju upute u Dockerfileu slike koji čini izvršnu softversku aplikaciju.
Docker datoteka ima sljedeći oblik:
# Comment INSTRUCTION arguments
INSTRUCTION
nisu mala i mala slova, ali konvencija je upotreba UPPERCASE za njegova imena.
Ispod je popis kratkih opisa nekih od najčešće korištenih dokumenata Dockerfile:
- ARG - Ova upute vam omogućuje definiranje varijabli koje se mogu proslijediti u vrijeme izrade. Također možete postaviti zadanu vrijednost. FROM - Osnovna slika za izgradnju nove slike. Ova uputa mora biti prva instrukcija bez komentara u Dockerfileu. Jedina iznimka od ovog pravila je kada želite koristiti varijablu u argumentu
FROM
. U ovom slučaju,FROM
može prethoditi jednoj ili višeARG
uputa. LABEL - Koristi se za dodavanje metapodataka slici, kao što su opis, verzija, autor.. itd. Možete odrediti višeLABEL
, a svakaLABEL
uputa je par ključ-vrijednost. RUN - Naredbe navedene u ovoj uputi izvršavat će se tijekom postupka sastavljanja. SvakaRUN
upute stvara novi sloj na vrhu trenutne slike. ADD - Koristi se za kopiranje datoteka i mapa iz navedenog izvora na određeno odredište na docker imageu. Izvor mogu biti lokalne datoteke ili mape ili URL. Ako je izvor lokalna arhiva katrana, on se automatski raspakira u Docker sliku. COPY - Slično kaoADD
ali izvor može biti samo lokalna datoteka ili mapa. ENV - Ova vam uputa omogućuje definiranje varijable okoline. CMD - koristi se za određivanje naredbe koja će se izvršiti kada pokrenete spremnik. U svom Dockerfileu možete koristiti samo jednuCMD
upute. ENTRYPOINT - Slično kao uCMD
, ova uputa definira koja će se naredba izvršiti prilikom pokretanja spremnika. WORKDIR - Ova direktiva postavlja trenutni radni imenik za upute zaRUN
,CMD
,ENTRYPOINT
,COPY
iADD
. KORISNIK - Postavite korisničko ime iliUID
za korištenje sljedećih uputa zaRUN
,CMD
,ENTRYPOINT
,COPY
iADD
. VOLUME - Omogućuje vam postavljanje direktorija glavnog računala na spremnik. EXPOSE - Koristi se za određivanje porta na kojem spremnik sluša tijekom izvođenja.
Da biste izuzeli datoteke i mape dodavanjem slici, stvorite
.dockerignore
datoteku u direktoriju konteksta. Sintaksa
.dockerignore
slična je
.gitignore
datoteci.
Za potpunu referencu i detaljno objašnjenje Dockerfile upute pogledajte službenu stranicu Dockerfile.
Napravite dockerfile
Najčešći scenarij prilikom stvaranja Docker slika je izvlačenje postojeće slike iz registra (obično iz Docker Hub-a) i navođenje promjena koje želite izvršiti na osnovnoj slici. Najčešće korištena osnovna slika pri stvaranju Docker slika je Alpine jer je mala i optimizirana za pokretanje u RAM-u.
U ovom ćemo primjeru stvoriti Docker sliku za Redis poslužitelj. Kao osnovnu sliku koristit ćemo najnoviji ubuntu 18.04.
Prvo stvorite direktorij koji će sadržavati Dockerfile i sve potrebne datoteke:
mkdir ~/redis_docker
Otvorite direktorij i stvorite sljedeći Dockerfile:
cd ~/redis_docker
nano Dockerfile
Dockerfile
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD
Objasnimo značenje svakog od redaka u Dockerfileu:
- U prvom redu definiramo osnovnu sliku. Uputa za
RUN
koja započinje u retku3
ažurirat će apt indeks, instalirati paket "redis-server" i očistiti prikladnu predmemoriju. Naredbe koje se koriste u uputama su iste kao i naredbe koje biste koristili za instaliranje redisa na Ubuntu poslužitelj.UputaEXPOSE
definira vrata na kojima poslužuje redis poslužitelj. U posljednjem retku koristimoCMD
upute za postavljanje zadane naredbe koji će se izvesti kad se spremnik pokrene.
Spremite datoteku i zatvorite uređivač.
Izgradnja slike
Sljedeći korak je izgradnja slike. Da biste to učinili, iz imenika u kojem se nalazi Dockerfile pokrenite sljedeću naredbu:
docker build -t linuxize/redis.
Opcija
-t
određuje naziv slike i, po želji, korisničko ime i oznaku u formatu 'korisničko ime / ime slike: tag'.
Izlaz procesa sastavljanja izgledat će ovako:
Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest
Kad je proces sastavljanja nova slika bit će navedena na popisu slika:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB
Trčanje spremnika
Sada kada je slika stvorena pokrenite spremnik iz nje trčeći:
docker run -d -p 6379:6379 --name redis linuxize/redis
Opcije
-d
govore Docker-u da pokreće spremnik u odvojenom načinu, opcija
-p 6379:6379
objavit će port 6379 glavnom stroju, a opcija
--name redis
određuje naziv spremnika. Posljednji argument
linuxize/redis
je naziv slike koja se koristi za pokretanje spremnika.
Kada se spremnik pokrene, koristite sljedeću naredbu za popis svih spremnika:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis
Da biste provjerili radi li sve kako treba,
redis-cli
treba povezati s docker spremnikom:
redis-cli ping
Poslužitelj redis trebao bi odgovoriti
PONG
.
Zaključak
Ovaj je udžbenik pokrivao samo osnove korištenja Dockerfilesa za izgradnju slika. Da biste saznali više o pisanju Dockerfiles-a i preporučenim najboljim postupcima, pogledajte Najbolje prakse za pisanje Dockerfiles-a.
Kako izraditi sigurnosnu kopiju datoteka kako bi bili sigurni od ransomwarea

Saznajte kako sigurnosno kopirati svoj Windows i datoteke kako bi bili zaštićeni od napada ransomwarea
Kako izrezati slike u slike na platnu (radne površine i mobilne aplikacije)

Želite li obrezati svoju sliku u oblik kruga? Evo kako obrezati sliku u različite oblike na Canvu na mobilnom i radnom stolu.
Kako ukloniti spremnike, slike, sveske i mreže docker spremnika

Ovaj vodič služi kao varalica kako bi pomogao Dockerovim korisnicima da organiziraju svoj sustav i oslobodi prostor na disku uklanjanjem neiskorištenih Docker spremnika, slika, svezaka i mreža.