Docker file рецепт для Docker images. Как рождается Docker контейнер c помощью Docker build.
Cuprins:
O imagine Docker este modelul containerelor Docker care conține aplicația și tot ceea ce aveți nevoie pentru a rula aplicația. Un container este o instanță de execuție a unei imagini.
În acest tutorial, vă vom explica ce este Dockerfile, cum să creați unul și cum să construiți o imagine Docker cu Dockerfile.
Ce este Dockerfile
Un Dockerfile este un fișier text care conține toate comenzile pe care un utilizator le-ar putea rula pe linia de comandă pentru a crea o imagine. Include toate instrucțiunile necesare Docker pentru a construi imaginea.
Imaginile Docker sunt alcătuite dintr-o serie de straturi de sistem de fișiere reprezentând instrucțiuni în fișierul Dockerfile al imaginii care alcătuiește o aplicație software executabilă.
Fișierul Docker are următoarea formă:
# Comment INSTRUCTION arguments
INSTRUCTION
nu este sensibilă la caz, dar convenția este de a utiliza UPPERCASE pentru numele sale.
Mai jos este lista cu o scurtă descriere a unora dintre cele mai utilizate instrucțiuni Dockerfile:
- ARG - Această instrucțiune vă permite să definiți variabile care pot fi transmise la timp de construire. Puteți seta, de asemenea, o valoare implicită. FROM - Imaginea de bază pentru construirea unei noi imagini. Această instrucțiune trebuie să fie prima instrucțiune care nu comentează în Dockerfile. Singura excepție de la această regulă este atunci când doriți să utilizați o variabilă în argumentul
FROM. În acest caz,FROMpoate fi precedat de una sau mai multe instrucțiuniARG. LABEL - Folosit pentru a adăuga metadate la o imagine, cum ar fi descriere, versiune, autor.. etc. Puteți specifica mai mult de unLABELși fiecare instrucțiuneLABELeste o pereche cheie-valoare. RUN - Comenzile specificate în această instrucțiune vor fi executate în timpul procesului de compilare. Fiecare instrucțiuneRUNcreează un nou strat în partea de sus a imaginii curente. ADD - Folosit pentru copierea fișierelor și directoarelor din sursa specificată la destinația specificată din imaginea docker. Sursa poate fi fișiere sau directoare locale sau o adresă URL. Dacă sursa este o arhivă de gudron local, atunci aceasta este despachetată automat în imaginea Docker. COPIE - Similar cuADDdar sursa poate fi doar un fișier sau director local. ENV - Această instrucțiune vă permite să definiți o variabilă de mediu. CMD - Se folosește pentru a specifica o comandă care va fi executată atunci când rulați un container. Puteți utiliza o singură instrucțiuneCMDîn Dockerfile. ENTRYPOINT - Similar cuCMD, această instrucțiune definește ce comandă va fi executată la rularea unui container. WORKDIR - Această directivă stabilește directorul de lucru curent pentru instrucțiunileRUN,CMD,ENTRYPOINT,COPYșiADD. UTILIZATOR - Setați numele de utilizator sauUIDcare îl folosiți atunci când executați următoarele instrucțiuniRUN,CMD,ENTRYPOINT,COPYșiADD. VOLUM - Vă permite să montați un director de mașină gazdă pe container. EXPOSE - Folosit pentru a specifica portul pe care containerul îl ascultă la runtime.
Pentru a exclude fișierele și directoarele de la adăugarea la imagine, creați un fișier
.dockerignore
în directorul contextual. Sintaxa
.dockerignore
este similară cu cea a fișierului
.gitignore
de la Git.
Pentru o referință completă și explicație detaliată a instrucțiunilor Dockerfile, consultați pagina oficială de referință Dockerfile.
Creați un Dockerfile
Cel mai frecvent scenariu la crearea de imagini Docker este să trageți o imagine existentă dintr-un registru (de obicei din Docker Hub) și să specificați modificările pe care doriți să le faceți pe imaginea de bază. Imaginea de bază cea mai frecvent utilizată la crearea imaginilor Docker este Alpine, deoarece este mică și optimizată pentru a fi rulată în RAM.
În acest exemplu, vom crea o imagine Docker pentru serverul Redis. Vom folosi cea mai recentă ubuntu 18.04 ca imagine de bază.
Mai întâi, creați un director care va conține Dockerfile și toate fișierele necesare:
mkdir ~/redis_docker
Navigați la director și creați următorul 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
Să explicăm semnificația fiecăreia dintre liniile din Dockerfile:
- În linia
1definim imaginea de bază. InstrucțiuneaRUNcare începe în linia3va actualiza indexul apt, va instala pachetul „redis-server” și va curăța memoria cache apt. Comenzile utilizate în instrucțiuni sunt aceleași cu comenzile pe care le-ați folosi pentru a instala redis pe serverul Ubuntu. Instrucțiunea EXPOSE definește portul pe care ascultă serverul redis. În ultima linie, utilizăm instrucțiuneaCMDpentru a seta comanda implicită care va fi executat la rularea containerului.
Salvați fișierul și închideți editorul.
Construirea imaginii
Următorul pas este construirea imaginii. Pentru aceasta, executați următoarea comandă din directorul în care se află Dockerfile:
docker build -t linuxize/redis.
Opțiunea
-t
specifică numele imaginii și, opțional, un nume de utilizator și o etichetă în formatul „nume de utilizator / imagename: etichetă”.
Rezultatul procesului de compilare va arăta astfel:
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
După finalizarea procesului de construire, noua imagine va fi prezentată în lista de imagini:
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
Rularea unui container
Acum că imaginea este creată, rulați un container de pe ea rulând:
docker run -d -p 6379:6379 --name redis linuxize/redis
Opțiunile
-d
îi spun lui Docker să ruleze containerul în modul detașat, opțiunea
-p 6379:6379
va publica portul 6379 mașinii gazdă, iar opțiunea -
--name redis
specifică numele containerului. Ultimul argument
linuxize/redis
este numele imaginii, care este utilizat pentru a rula containerul.
Când pornește containerul, utilizați următoarea comandă pentru a enumera toate containerele care rulează:
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
Pentru a verifica dacă totul funcționează așa cum ar trebui să utilizeze
redis-cli
pentru a vă conecta la containerul docker:
redis-cli ping
Serverul redis ar trebui să răspundă cu
PONG
.
Concluzie
Acest tutorial a acoperit doar elementele de bază ale utilizării Dockerfiles pentru a construi imagini. Pentru a afla mai multe despre cum se scrie Dockerfiles și despre cele mai bune practici recomandate, consultați Cele mai bune practici pentru scrierea Dockerfiles.
Dacă ați încercat vreodată să lucrați cu imagini mici, cum ar fi tipurile generate de cameraphone, știți cât de frustrant este să le transformați într-un lucru tipărit (sau în unele cazuri, ușor de văzut). Majoritatea editorilor de imagine fac o încercare de a netezi și de a ascuți, iar unii adaugă un pic de "zgomot" (date aleatorii, care, contraintuitiv, pot face o imagine mărită mai puțin accentuată) la imagini mărită. Dar nu am văzut niciunul dintre ei nu face o treabă atât de bună
SmillaEnlarger mărește dimensiunea bitmap-urilor mici, cum ar fi fotografii făcute cu telefoane mobile, minimalizând blocarea.
Cum se salvează și se etichetează mai multe imagini în Căutarea de imagini Google
Căutarea de imagini Google oferă acum o funcție de salvare și etichetă imaginile lor preferate și să le organizeze într-un singur loc ca și colecții.
Cum să obțineți imagini de fundal cu imagini prin satelit pe iPhone, Android
Iată 3 modalități de a obține imagini prin satelit cool ca imagini de fundal pe iPhone și Android.







