Ce este Dockerfile și cum se creează o imagine Docker?

În timp ce lucrați la proiecte de docker, de cele mai multe ori, imaginile docker existente nu vă îndeplinesc cerințele.


Aici intervine Dockerfile; te va ajuta să creezi imagini Docker personalizate. Prin urmare, cunoașterea Dockerfile este esențială.

Ce este Dockerfile?

Este un fișier text simplu cu un set de comandă sau instrucțiune. Aceste comenzi / instrucțiuni sunt executate succesiv pentru a efectua acțiuni asupra imaginii de bază pentru a crea o nouă imagine docker.

comentariile și comenzile + argumentele sunt două tipuri de blocuri de linii principale în sintaxa Dockerfile

Comentarii Sintaxă

#Line blocuri utilizate pentru comentarii

argument argument de comandă1 …..

Comenzi + Exemple de argumente

#Line blocuri utilizate pentru comentarii

argument argument de comandă1 …..

Mai jos este cum va arăta fluxul de lucru.

  • Creați un Dockerfile și menționați instrucțiunile pentru crearea imaginii dvs. de docker
  • Executați comanda docker build care va construi o imagine docker
  • Acum imaginea docker este gata de a fi utilizată, folosiți comanda docker run pentru a crea containere

flux de lucru dockerfile

Comenzi de bază

DIN – Definește imaginea de bază pe care trebuie să o utilizeze și începe procesul de construire.

ALERGA – Este nevoie de comanda și argumentele sale pentru a o rula din imagine.

CMD – Funcție similară ca o comandă RUN, dar se execută numai după ce containerul este instanțiat.

PUNCT DE INTRARE – Vizează aplicația dvs. implicită din imagine atunci când este creat containerul.

ADĂUGA – Copiază fișierele de la sursă la destinație (în interiorul containerului).

ENV – Setează variabile de mediu.

Cum se creează o imagine Docker cu un Dockerfile?

În primul rând, să creăm un document Dockerfile.

[Email protected]: ~ $ gedit Dockerfile

Puneți în el comenzile / instrucțiunile de mai jos și salvați-l.

# Setați imaginea de bază la Ubuntu
DE la ubuntu

# Actualizați lista surselor de depozit și instalați gnupg2
Actualizare RUN apt-get && apt-get install -y gnupg2

# Adăugați cheia de verificare a pachetului
RUN apt-key adv –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

# Adăugați MongoDB la lista surselor de depozit
RUN echo ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > tee /etc/apt/sources.list.d/mongodb.list

# Actualizați lista surselor de depozit
Actualizare RUN apt-get

# Instalați pachetul MongoDB (.deb)
RUN apt-get install -y mongodb

# Creați directorul de date implicit
RUN mkdir -p / data / db

# Expuneti portul implicit
EXPUNE 27017

# Port implicit pentru a executa punctul de intrare (MongoDB)
CMD ["–port 27017"]

# Setați comanda containerului implicit
ENTRYPOINT usr / bin / mongodb

În acest Dockerfile, ubuntu este setat ca imagine de bază. Apoi, sunt menționate comenzile și argumentele necesare pentru a instala MongoDB. Portul 27017 este expus MongoDB cu comanda containerului implicită ca usr / bin / mongodb

În continuare, îl voi rula pentru a crea o imagine docker.

Rulează un Dockerfile

Următoarea comandă va crea o imagine docker numită geekflare_mongodb după executarea cu succes.

[Email protected]: ~ $ docker build -t geekflare_mongodb .

Se trimite contextul de compilare la daemonul Docker 667.2MB

Pasul 1/9: FROM ubuntu

cea mai recentă: extragerea din bibliotecă / ubuntu

7413c47ba209: Trageți complet

0fe7e7cbb2e8: Trageți complet

1d425c982345: Trageți complet

344da5c95cec: Trage complet

Digest: sha256: c303f19cfe9ee92badbbbd7567bc1ca47789f79303ddcef56f77687d4744cd7a

Stare: a descărcat o imagine mai nouă pentru ubuntu: cea mai recentă

—> 3556258649b2

Pasul 2/10: RUN actualizare apt-get RUN && apt-get install -y gnupg2

—> Funcționare în de3706328761

Obțineți: 1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88,7 kB]

Obțineți: 2 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]

Preluat 16,9 MB în 38s (445 kB / s)

Citirea listelor de pachete…

Citirea listelor de pachete…

Construirea arborelui dependenței…

Citirea informațiilor de stat…

Trebuie să obțineți 5187 kB de arhive.

După această operație, vor fi utilizate 15,8 MB de spațiu suplimentar pe disc.

Obțineți: 1 http://archive.ubuntu.com/ubuntu bionic / main amd64 readline-common all 7.0-3 [52,9 kB]

Obțineți: 2 http://archive.ubuntu.com/ubuntu bionic / main amd64 libreadline7 amd64 7.0-3 [124 kB]

Obțineți: 3 http://archive.ubuntu.com/ubuntu bionic-actualizări / main amd64 libsqlite3-0 amd64 3.22.0-1ubuntu0.1 [497 kB]

Obțineți: 4 http://archive.ubuntu.com/ubuntu bionic-actualizări / main amd64 libssl1.1 amd64 1.1.1-1ubuntu2.1 ~ 18.04.4 [1300 kB]

debconf: întârzie configurația pachetului, deoarece apt-utils nu este instalat

Preluat 5187 kB în 12s (416 kB / s)

Selectarea comună a pachetului readline-comun anterior.

(Citirea bazei de date … 4040 fișiere și directoare instalate în prezent.)

Pregătirea pentru a despacheta … / 00-readline-common_7.0-3_all.deb …

Dezambalarea liniei comune (7.0-3) …

Selectarea pachetului anterior neselectat liberadline7: amd64.

Pregătirea pentru a despacheta … / 01-libreadline7_7.0-3_amd64.deb …

Selectarea dirmngr pachetului anterior neselectat.

Configurarea libnpth0: amd64 (1.5-3) …

Configurarea libksba8: amd64 (1.3.5-2) …

Configurarea gnupg-l10n (2.2.4-1ubuntu1.2) …

Procesarea declanșatoarelor pentru libc-bin (2.27-3ubuntu1) …

Scoaterea containerului intermediar de3706328761

—> a32533894ed1

Pasul 3/10: RUN apt-key adv –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

—> Desfășurat în 69c4dba38983

Avertisment: ieșirea cu cheie aptă nu trebuie analizată (stdout nu este un terminal)

Executare: /tmp/apt-key-gpghome.MuT5BDWwKZ/gpg.1.sh –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

gpg: cheie 5F8F93707F0CEB10: cheie publică "Cheie de semnare totală a legitimii <[Email protected]>" importate

gpg: cheie 9ECBEC467F0CEB10: 1 semnătură nu a fost verificată din cauza unei taste lipsă

gpg: key 9ECBEC467F0CEB10: cheie publică "Richard Kreuter <[Email protected]>" importate

gpg: număr total procesat: 2

gpg: importat: 2

Scoaterea containerului intermediar 69c4dba38983

—> cffbe06c1b50

Pasul 4/10: RUN echo ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > tee /etc/apt/sources.list.d/mongodb.list

—> Funcționare în 40630fd7b0a9

Scoaterea containerului intermediar 40630fd7b0a9

—> a1bd9d8d7e51

Pasul 5/10: actualizare RUN apt-get

—> Desfășurat în 750717d9c0ea

Hit: 1 http://archive.ubuntu.com/ubuntu bionic InRelease

Hit: 2 http://archive.ubuntu.com/ubuntu bionic-actualizări InRelease

Hit: 3 http://security.ubuntu.com/ubuntu bionic-security InRelease

Hit: 4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease

Citirea listelor de pachete…

Scoaterea containerului intermediar 750717d9c0ea

—> 397d6501db58

Pasul 6/10: RUN apt-get install -y mongodb

—> Funcționare în 88609c005e73

Citirea listelor de pachete…

Construirea arborelui dependenței…

Citirea informațiilor de stat…

Următoarele pachete NOU vor fi instalate:

libboost-filesystem1.65.1 libboost-iostreams1.65.1

libboost-program-options1.65.1 libboost-system1.65.1 libgoogle-perftools4

libpcap0.8 libpcrecpp0v5 libsnappy1v5 libstemmer0d libtcmalloc-minimal4

libunwind8 libyaml-cpp0.5v5 mongo-tools mongodb mongodb-clients

mongodb-server mongodb-server-core

0 actualizat, 17 recent instalat, 0 pentru eliminat și 0 neactualizat.

Trebuie să obțineți 53,7 MB de arhive.

După această operație, vor fi utilizate 218 MB de spațiu suplimentar pe disc.

Obțineți: 1 http://archive.ubuntu.com/ubuntu bionic-actualizări / univers amd64 mongodb-clients amd64 1: 3.6.3-0ubuntu1.1 [20.2 MB]

Obțineți: 2 http://archive.ubuntu.com/ubuntu bionic-actualizări / univers amd64 mongodb-server-core amd64 1: 3.6.3-0ubuntu1.1 [20.3 MB]

Obțineți: 3 http://archive.ubuntu.com/ubuntu bionic-actualizări / univers amd64 mongodb-server all 1: 3.6.3-0ubuntu1.1 [12.6 kB]

Obțineți: 4 http://archive.ubuntu.com/ubuntu bionic-actualizări / univers amd64 mongodb amd64 1: 3.6.3-0ubuntu1.1 [9968 B]

Preluat 53,7 MB în 10s (5485 kB / s)

Selectarea pachetului anterior neselectat libpcap0.8: amd64.

(Citirea bazei de date … 4390 fișiere și directoare instalate în prezent.)

Selectarea pachetului mongodb-clients anterior neselectat.

Pregătirea pentru a despacheta … / 13-mongodb-clients_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Dezambalarea clienților mongodb (1: 3.6.3-0ubuntu1.1) …

Selectarea pachetului mongodb-server-core anterior neselectat.

Pregătirea pentru a despacheta … / 14-mongodb-server-core_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Despachetarea mongodb-server-core (1: 3.6.3-0ubuntu1.1) …

Selectarea pachetului mongodb-server anterior neselectat.

Pregătirea pentru a despacheta … / 15-mongodb-server_1% 3a3.6.3-0ubuntu1.1_all.deb …

Dezambalarea serverului mongodb (1: 3.6.3-0ubuntu1.1) …

Selectarea mongodb a pachetului anterior neselectat.

Pregătirea pentru a despacheta … / 16-mongodb_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Despachetarea mongodb (1: 3.6.3-0ubuntu1.1) …

Configurarea mongodb-server-core (1: 3.6.3-0ubuntu1.1) …

Configurarea mongo-tools (3.6.3-0ubuntu1) …

Configurarea clienților mongodb (1: 3.6.3-0ubuntu1.1) …

Configurarea serverului mongodb (1: 3.6.3-0ubuntu1.1) …

invoke-rc.d: nu a putut determina rulajul curent

invoke-rc.d: policy-rc.d a respins executarea startului.

Configurarea mongodb (1: 3.6.3-0ubuntu1.1) …

Procesarea declanșatoarelor pentru libc-bin (2.27-3ubuntu1) …

Scoaterea containerului intermediar 88609c005e73

—> d9c072cb1f84

Pasul 7/10: RUN mkdir -p / data / db

—> Alergare în f817778f69ab

Scoaterea containerului intermediar f817778f69ab

—> a3fbdb3def5c

Etapa 8/10: EXPUNE 27017

—> Se rulează în 8d070e2a1e07

Înlăturarea containerului intermediar 8d070e2a1e07

—> f770776a538c

Pasul 9/10: CMD ["–port 27017"]

—> Se rulează în ab612410df77

Scoaterea containerului intermediar ab612410df77

—> e5830b80934f

Etapa 10/10: ENTRYPOINT usr / bin / mongod

—> Desfășurare în 95f574727aab

Scoaterea containerului intermediar 95f574727aab

—> 095d17727ca0

Construit cu succes 095d17727ca0

Etichetat cu succes geekflare_mongodb: cel mai recent

Să verificăm dacă imaginea docker a fost creată cu numele geekflare_mongodb.

[Email protected]: ~ $ docker images

TAG REPOSITORIU MĂRIRE CREATE ID IMAGINI

geekflare_mongodb cel mai recent 095d17727ca0 acum 3 minute 325MB

ubuntu cel mai recent 3556258649b2 acum 4 zile 64.2MB

mean_express cel mai recent 35dcb3df9806 acum 6 zile 923MB

mean_angular ultima 9f8d61db600c acum 6 zile 1.29GB

Rulați imaginea docker geekflare_mongodb în interiorul unui container mongo_container.

[Email protected]: ~ $ docker run – nume mongo_container -i -t geekflare_mongodb

2019-07-27T19: 38: 23.734 + 0000 I CONTROL [initandlisten] Pornire MongoDB: pid = 6 port = 27017 dbpath = / data / db host 64-bit = b0095c1e5536

2019-07-27T19: 38: 23.735 + 0000 I CONTROL [initandlisten] versiunea db v3.6.3

2019-07-27T19: 38: 23.735 + 0000 I CONTROL [initandlisten] versiune git: 9586e557d54ef70f9ca4b43c26892cd55257e1a5

2019-07-27T19: 38: 23.736 + 0000 I CONTROL [initandlisten] Versiunea OpenSSL: OpenSSL 1.1.1 11 sept. 2018

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] alocator: tcmalloc

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] module: none

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] mediu de construire:

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] distarch: x86_64

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] target_arch: x86_64

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] opțiuni: {}

2019-07-27T19: 38: 23.745 + 0000 I STORAGE [initandlisten] wiredtiger_open config: create, cache_size = 2038M, session_max = 20000, evacuare = (threads_min = 4, threads_max = 4), config_base = false, statistici = (rapid) , log = (activat = true, arhiva = true, calea = jurnal, compresor = vioi), file_manager = (close_idle_time = 100000), statistics_log = (= 0 așteptare), verbose = (recovery_progress),

2019-07-27T19: 38: 24.733 + 0000 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.734 + 0000 I CONTROL [initandlisten] ** AVERTISMENT: Controlul accesului nu este activat pentru baza de date.

2019-07-27T19: 38: 24.735 + 0000 I CONTROL [initandlisten] ** Accesul de citire și scriere la date și configurare nu este restricționat.

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten] ** AVERTISMENT: Executați acest proces ca utilizator root, ceea ce nu este recomandat.

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten] ** AVERTISMENT: Acest server este legat de localhost.

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** Sistemele la distanță nu se pot conecta la acest server.

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** Porniți serverul cu –bind_ip pentru a specifica ce IP

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** adresele pe care ar trebui să le răspundă sau cu –bind_ip_all la

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** se leagă la toate interfețele. Dacă se dorește acest comportament, începeți tasta

2019-07-27T19: 38: 24.738 + 0000 I CONTROL [initandlisten] ** server cu –bind_ip 127.0.0.1 pentru a dezactiva acest avertisment.

2019-07-27T19: 38: 24.738 + 0000 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.739 + 0000 I STORAGE [initandlisten] createCollection: admin.system.version cu UUID furnizat: 4b8b509d-633a-46c1-a302-cb8c82b0d5d3

2019-07-27T19: 38: 24.788 + 0000 I COMMAND [initandlisten] setare funcțieCompatibilitateVersiune la 3.6

2019-07-27T19: 38: 24.818 + 0000 I STORAGE [initandlisten] createCollection: local.startup_log cu UUID generat: 6c1c0366-4b1b-4b92-9fcd-d18acc126072

2019-07-27T19: 38: 24.862 + 0000 I FTDC [initandlisten] Inițializarea captării datelor full-time de diagnostic cu directorul „/data/db/diagnostic.data”

2019-07-27T19: 38: 24.866 + 0000 I NETWORK [initandlisten] în așteptarea conexiunilor pe portul 27017

Deschideți un terminal nou și verificați dacă mongo_container rulează.

[Email protected]: ~ $ docker ps

ID-ul CONTAINERULUI COMANDĂ IMAGINI STATUS CREATE NUMELE PORTI

b0095c1e5536 geekflare_mongodb   "/ bin / sh -c usr / bin / …"   Acum 35 secunde Sus 33 secunde 27017 / tcp mongo_container

După cum vedeți, containerul creat din imaginea geekflare_mongodb este în funcțiune.

Sper că asta vă oferă o idee despre dockerfile și beneficiile acestuia. De asemenea, puteți consulta această documentație la Cele mai bune practici Dockerfile pentru a afla mai multe.

ETICHETE:

  • Docher

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map